2

Mac OS X マシンで処理する必要がある PDF ファイルから Windows で生成された 5000 以上のテキスト ファイルがあります。それらすべてで実行dos2unixして、改行を修正し、エンコーディングを UTF-16LE から UTF-8 に変換します。

4949 の場合はすべてうまくいきますが、320 のファイルの場合、dos2unix はバイナリ ファイルであるとして実行をスキップします。

これは、スキップされた 320 個のファイルとその他のファイルのテキストをfile -c提供することと一貫性があります。dataただし、それらは目視検査によるテキストです...

320 の修理方法を教えてください。最初は BOM の存在ではないかと疑っていましたが、問題のないファイルにも表示されます。

さらに、データとテキスト ファイルの両方が次で始まります。

0000000 ff fe 3d 00 20 00 70 00 61 00 67 00 65 00 20 00
0000010 31 00 20 00 3d 00 0a 00 0d 00 0d 00 0a 00

ヒントはありますか?前もって感謝します。

4

3 に答える 3

2

テキスト ファイルに印刷できない ASCII 文字が含まれていることがあります。このような場合、ファイルが「テキスト」ファイルであっても、dos2unix はそれらをバイナリと見なします。この場合、次のようにtrコマンドを使用できます。

tr -cd '\11\12\15\40-\176' < file.txt

これは基本的なコマンドであり、印刷できない文字を消去し、新しい ASCII クリーン テキストを stdout に出力します。この出力を実際にファイルとして保存するには、出力をファイルにパイプするだけです。

tr -cd '\11\12\15\40-\176' < file.txt > newfile.txt

newfile.txtこれで、実行できるテキスト ファイルが作成されましたdos2unix

文字列の補数 (つまり-c) は'\11\12\15\40-\176'trコマンドがその文字列で定義されている文字以外のすべてを削除することを意味します。

  • 8 進数 \11: タブ
  • 8 進数 \12: 改行
  • 8 進数 \15: キャリッジ リターン
  • 8 進数 \40-\176: すべての正常な/通常のキーボード文字
于 2014-10-21T21:03:56.283 に答える
0

によると、 「バイナリファイルの強制変換」dos2unix --helpに引数--forceを渡すことができます。dos2unixしたがって、シェルで、320 個のスキップされたファイルだけを含むディレクトリ内で、dos2unix --force *.

于 2013-05-29T16:46:03.050 に答える
0

最新バージョンの dos2unix (6.0.3) を試すことができます。最初のバイナリ シンボルの行番号を出力します。これは、問題の分析に役立つ場合があります。

よろしくお願いします、

于 2013-06-06T06:45:13.643 に答える