.csvファイルから0dキャリッジリターン文字を削除する

.csvファイルから0dキャリッジリターン文字を削除する

スクリプトを使用すると、この問題が発生しました。ほとんどの場合、スクリプトを実行すると、次の出力ファイルが表示されます。

device_id,ip_address,serial_number
 SEP0c1167231746, 148.000.000.32
 SEP0c1167223fa5, 148.000.000.30
 SEP0c1167224170, 148.000.000.30
 SEP0c1167231d2e, 148.000.000.194
 SEP0c1167233b9f, 148.000.000.31
 CUV, 148.000.000.254
 SEP0c1167231d32, 148.000.000.34
 SEP501cbffcfa9c, 148.000.000.24
 SEP00082fb67d5f, 148.000.000.21
 SEP00082fb67701, 148.000.000.22

これは私が期待したものですが、時にはファイルが次のように見えることがあります。

device_id,ip_address,serial_number
 SEP0c1167231746
, 148.000.000.32
 SEP0c1167223fa5
, 148.000.000.30
 SEP0c1167224170
, 148.000.000.30
 SEP0c1167231d2e
, 148.000.000.194
 SEP0c1167233b9f
, 148.000.000.31
 CUV
, 148.000.000.254
 SEP0c1167231d32
, 148.000.000.34
 SEP501cbffcfa9c
, 148.000.000.24
 SEP00082fb67d5f
, 148.000.000.21
 SEP00082fb67701
, 148.000.000.22

何が起きているのか把握しようとしていますが、正常ではないようです。今問題を処理したいと思います。 Ghexを使用して問題を引き起こす文字を識別しました。

ここに画像の説明を入力してください。

今、すべての「0D」をNullに変更し、すべての「0A」を維持したいと思います。

ちなみに「dos2unix」を使ってみましたが、うまくいきませんでした。

助けてください?

更新: 使用: sed -n -e '/,/!{N;s/\n//;} /,/p' 入力

次のファイルで:

device_id,ip_address,serial_number
 SEP0c1167231746
, 148.000.000.32
,
 SEP0c1167223fa5
, 148.000.000.30
,
 SEP0c1167224170
, 148.000.000.30
,
 SEP0c1167231d2e
, 148.000.000.194
,
 SEP0c1167233b9f
, 148.000.000.31
,
 CUV
, 148.000.000.254
,
 SEP0c1167231d32
, 148.000.000.34
,
 SEP501cbffcfa9c
, 148.000.000.24
,
 SEP00082fb67d5f
, 148.000.000.21
,
 SEP00082fb67701
, 148.000.000.22

私は次のような結果を得ました。

, 148.000.000.32
, 148.000.000.30
, 148.000.000.30
, 148.000.000.194
, 148.000.000.31
, 148.000.000.254
, 148.000.000.34
, 148.000.000.24
, 148.000.000.21
, 148.000.000.22

ベストアンサー1

おそらくより良いオプションがあるかもしれませんが、sedここに1つあります。

sed -n -e '/,/!{N;s/\n//;}; /,/p' input > output

(デフォルトでは行は印刷されません):行にカンマがある場合は、次をお読みください。Next改行文字をラップして置き換えます。次に、その行(現在またはすでに)にカンマがある場合は、その行を印刷します。で読み書きinputしますoutput。一部のsedでは、sedの-iフラグを使用してファイルを任意の場所で編集できます。

入力例:

device_id,ip_address,serial_number
 SEP0c1167231746, 148.000.000.32
 SEP0c1167223fa5, 148.000.000.30
 SEP0c1167231746
, 148.000.000.32
 SEP0c1167223fa5
, 148.000.000.30

出力例:

device_id,ip_address,serial_number
 SEP0c1167231746, 148.000.000.32
 SEP0c1167223fa5, 148.000.000.30
 SEP0c1167231746, 148.000.000.32
 SEP0c1167223fa5, 148.000.000.30

おすすめ記事