1

特定のフィールドに追加のキャリッジ リターン文字が表示されている Unix のファイルがあり、それを削除したいと考えています。

フィールド内の文字の ASCII 値を出力してみましたが、次のように表示されます。

頭 -1 BVP.csv | カット -d "," -f26 | tr -d "\n" | od -An -t dc 34 78 13

フィールドの実際の値は次のとおりです: "N[Carriage Return]

そこで、次のようにキャリッジ リターン (ASCII 値 :13) を削除して、出力を新しいファイル BVP1.csv に出力しようとしました。

tr -d '\r' < BVP.csv > BVP1.csv

次に、同じコマンドを実行しました

頭 -1 BVP1.csv | カット -d "," -f26 | tr -d "\n" | od -An -t dc

34 78

キャリッジ リターンなしで ASCII 値を出力します。

しかし、任意のテキスト エディタまたは Windows からファイルを開くと、改行がファイル内で新しいレコードになっていることがわかります。つまり、追加の改行が削除されていません。

フィールドに表示されるこの追加の改行を削除する方法を提案してください。

前もってありがとう、トム

4

1 に答える 1

0

削除しようとしている (ASCII 13)LFの後に (ASCII 10) 文字があることは間違いありません。CRあなたのtr -d '\n'. BVP.csv のフィールド 26 からCRとの両方を削除する必要があります。ただし、 a の直後に表示される sLFのみを削除する必要があります。LFCR

次の単純な perl レシピを試してCR+LF、csv ファイルからすべてのコンボを削除し、そのままにしておきますLF

perl -p -e 's/\r\n//g' < BVP.csv > BVP1.csv

これは放っておくと剥がれCR+LFますLF

これがあなたが望むことをすると思う理由はCR、末尾のない裸LFは比較的まれだからです。CRなしで使用される MacOS X 以前のテキスト ファイル形式LF。OS X 以降、それらの人気は劇的に低下しました。

于 2013-07-10T07:51:01.850 に答える