シェルスクリプトを使用して、CSVファイルからデータがなく、カンマのみの最後の行を削除します。

シェルスクリプトを使用して、CSVファイルからデータがなく、カンマのみの最後の行を削除します。

理想的には1行から2行のデータが必要なCSVファイルを作成していますが、次のようになります。

11,ABC,3,4,5,6
,,,,,

私は成功せずに空行を削除するためにsedとawkコマンドを使ってみました。

sed -i 's/,,//g' fileName.csv

(奇数のカンマがある場合、これは動的解決策ではないため)

awk -F, 'length>NF+1' fileName.csv > fileName.csv

(ファイルに入れようとすると、ファイルからすべての行が削除されます。おそらく、sedコマンドとawkコマンドに慣れていないのは問題かもしれません。)

ベストアンサー1

データ転送

grep '[^,]'

非カンマ文字を含む行が抽出されます。その行を効果的に削除します。ただカンマを含めます。

例えば:

grep '[^,]' filename.csv >newname.csv

シェルは、リダイレクトするファイルを実行する前に切り取る(空にする)ため、読んでいるのと同じ名前にリダイレクトできませんgrep

sed実装が次の構文をサポートしている場合は、sed内部編集で行うこともできます。

sed -n -i '/[^,]/p' filename.csv

または

sed -i '/[^,]/!d' filename.csv

GNUを使用して所定の位置に編集awk:

awk -i inplace '/[^,]/' filename.csv

おすすめ記事