0

すべての空白行を削除し、ファイル内の行を大文字と小文字を区別しない通常の並べ替えで並べ替えるバッチ ファイルを作成したいと考えています。

これまでのところ、私はこれを得ました:

@echo off
IF [%1]==[] goto BAR_PAR

IF EXIST %1 (
    egrep -v "^[[:space:]]*$" %1 | sort > xxx
    mv -f xxx %1

) else (
    echo File doesn't exist
)
goto END

:BAR_PAR
echo No Parameter Passed

:END

しかし、これにより、UCS-2 リトル エンディアンでエンコードされたファイルが台無しになります。

すべてのエンコーディングをやみくもに処理する方法はありますか? そうでない場合、この UCS-2 リトル エンディアンと互換性を持たせるにはどうすればよいですか?

更新 Windowsを使用していたがCygwinを使用していたことを忘れていたので、grep、sedなどの一般的なLinuxシェルコマンドを使用しています...

4

2 に答える 2

1

Cygwinsort -fは、すべての文字を大文字に変換することで、大文字と小文字を区別せずにファイルを並べ替えます。

Cygwiniconvはある文字セットから別の文字セットに変換します。

于 2013-02-13T12:38:20.820 に答える
0
grep -e '[[:graph:]]' foo.txt | sort -f

つまり、このコマンドは、少なくとも 1 つの可視文字を含む行を探します。したがって、スペースとタブのみの行は除外されます。

何らかの理由で、私が作業していたファイルは、'^' と '$' を使用して考えられるどの組み合わせにも応答しませんでした。

于 2014-03-04T15:18:23.660 に答える