パターンが改行を削除する場合

パターンが改行を削除する場合

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

1st,2nd,3rd,4th,5th,6th,7th
"first-line
",2,3,4,5,6,7
"second-line
",2,3,4,5,6,7
"third-line
",2,3,4,5,6,7
"normal-line",2,3,4,5,6,7
"forth-line
",2,3,4,5,6,7
"fifth-line
",2,3,4,5,6,7

最初の列の閉じた引用符の前に改行文字を挿入すると、行が壊れているように見えます。対応する改行文字を削除したい。

私は次の解決策を使用しました。この回答ただし、テキストに正しい行(タイトルや「一般行」など)があると、混乱が発生します。

行がダウンしていない場合でもこれを行う方法はありますか?

ベストアンサー1

新しい回答(2022年10月)、使用ミラー最初の列から末尾のスペースを削除します。

$ mlr --csv put '$["1st"] = rstrip($["1st"])' file
1st,2nd,3rd,4th,5th,6th,7th
first-line,2,3,4,5,6,7
second-line,2,3,4,5,6,7
third-line,2,3,4,5,6,7
normal-line,2,3,4,5,6,7
forth-line,2,3,4,5,6,7
fifth-line,2,3,4,5,6,7

元の引用を維持してください。

$ mlr --csv --quote-original put '$["1st"] = rstrip($["1st"])' file
1st,2nd,3rd,4th,5th,6th,7th
"first-line",2,3,4,5,6,7
"second-line",2,3,4,5,6,7
"third-line",2,3,4,5,6,7
"normal-line",2,3,4,5,6,7
"forth-line",2,3,4,5,6,7
"fifth-line",2,3,4,5,6,7

場所ではなく名前で列を使用していることに注意してください。


以前の回答(2022年6月):

データにその文字が含まれていない@(そうでない場合は使用されていない他の文字に変更)、含まれているすべての改行を削除したいとします。

$ csvformat -M @ file.csv | tr -d '\n' | tr '@' '\n'
1st,2nd,3rd,4th,5th,6th,7th
first-line,2,3,4,5,6,7
second-line,2,3,4,5,6,7
third-line,2,3,4,5,6,7
normal-line,2,3,4,5,6,7
forth-line,2,3,4,5,6,7
fifth-line,2,3,4,5,6,7

これは以下を使用します。csvformatcsvkitから@改行文字の代わりにレコードターミネータとして使用されるデータストリームとしてCSVファイルの形式を再指定します。変換されたデータにまだ存在する改行は、tr後続のコマンドによって削除されます。

次に、2回目の呼び出しで一時レコードの終端を改行文字に戻しますtr

引用符が必要なフィールドは、出力から引き続き引用されます。

おすすめ記事