sedを使用してN行を追加する方法

sedを使用してN行を追加する方法

次のCSVファイルがあります。

hostname1,this is a test,001^M
hostname2,this is
a test,002^M
hostname3,this
is
a
test,003^M

最初の行はその行の正しい形式です。他の行も同じ形式に従いたいです。問題は2番目の列にあります。一部の列にはキャリッジリターンがあるので、3番目の列は新しい行にありますが、sedを使用して何行が分離されているかにかかわらず、すべての行を結合したいと思います。

ベストアンサー1

^MシーケンスがCR文字を表すと仮定します。

$ cat -et file.csv
hostname1,this is a test,001^M$
hostname2,this is$
a test,002^M$
hostname3,this$
is$
a$
test,003^M$

その後、行がCRで終わらない場合は、次を使用して行を次の行にリンクできます。

sed -e :a -e '/\r$/!N; s/\n//; ta' file.csv

前任者。

$ sed -e :a -e '/\r$/!N; s/\n//; ta' file.csv | cat -et
hostname1,this is a test,001^M$
hostname2,this isa test,002^M$
hostname3,thisisatest,003^M$

おすすめ記事