次のように、空行がたくさん含まれている.csvファイル(Macの場合)があります。
"1", "2", "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
lorem ipsum ","2","3","4"
"1", "2", "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
lorem ipsum ","2","3","4"
私はそれを次のように変換したいと思います:
"1", "2", "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum ","2","3","4"
"1", "2", "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum ","2","3","4"
ライナーがあるはずですが、awkやsedについてはわかりません。どんなアドバイスもありがとうございました!
ベストアンサー1
grepの(逆一致)パターンを使用して-v
これを行うことができます。
grep -v '^$' old-file.csv > new-file.csv
シェルのリダイレクトが機能するため、これらのファイルは異なるファイルでなければなりません。入力ファイルを読み込む前に、出力ファイルが開いて空になります。 moreutils(Mac OS Xではデフォルトではない)がある場合は、sponge
次の方法を使用してこの問題を解決できます。
grep -v '^$' file.csv | sponge file.csv
しかし、もちろん何かが間違っていると元に戻すのは難しいです。
「空行」に実際に空白を含めることができる場合(そのように聞こえますが)、次のものを使用できます。
egrep -v '^[[:space:]]*$' old-file.csv > new-file.csv
これにより、空白行だけでなく空白のみを含む行も無視されます。もちろんsponge
同じ方法で変換することもできます。