貼り付けコマンドを使用して、マージされたcsvファイル間の\ rを削除します。

貼り付けコマンドを使用して、マージされたcsvファイル間の\ rを削除します。

このようなコマンドを使用して、3つのcsvファイルをマージしました。

paste -d "," a.csv b.csv c.csv > result.csv

結果 csv には、次のように各行の b.csv 列と c.csv 列の間に予期しない改行文字があります。

col-a1, col-a2, col-b1, col-b2, col-b3
,col-c1, col-c2 ...

b.csvはもともとtsvで、次のコマンドを使用してcsvに変換されました。

cut -f3-5 b.tsv | tr "\t" "," > b.csv

ここで、元のb.tsvの5番目のフィールドは行の最後のフィールドです。

なぜ\ rがあるのですか?

これを考えると、貼り付けコマンドを使用する必要があります。 3 csvのすべての列が1行になるように改行を削除するにはどうすればよいですか?

アップデート:以下の説明に応答して、このコマンドの出力は

LC_ALL=C sed -n 'l;2q' result.csv

次のようになります。

col-a1, col-a2, col-b1, col-b2, col-b3\r,col-c1, col-c2$
...

答え1

コメントのヒントをいただいたStéphane Chazelasに感謝します。

ついに私は答えを得ました。削除の場合、\rtsvをcsvに変換するコマンドは次のようになります。

cut -f3-5 b.tsv | tr "\t" "," | tr -d "\r" > b.csv

関連情報