2017-09-12 2 views
1

私はカンマしか持たず、データも持たない行がいくつかあるファイルを持っています。問題は、行にコンマが固定されていないことです。データはbelow-カンマしか持たないcsvから行を削除するには

99,abc,123,, 
bcd,123,th 
,,bcd,123,th 
,,,,bcd,123,th 
,,, 
,,,,, 

のように見えるかもしれ出力は私だけコンマを持っている行を削除する必要が

99,abc,123,, 
bcd,123,th 
,,bcd,123,th 
,,,,bcd,123,th 

のようになります。 awk

awk -F, '!/^,+$/{print}' file 

かと

+3

'はgrep -v '^、* $' file'や' sedの '/ ^、* $/d' は、 – anubhava

+0

こんにちはfile'これらが動作していません。私はまだカンマだけを持つ行を見ることができます。 –

+0

おそらくあなたのcsvにはDOS行が終わっているでしょう。 'sed -E $ '/ ^、+ \\\ r?$/d'' – anubhava

答えて

2

は、単一のgrepをしてみてください。 (始まった線を否定するカンマをつけて最後までカンマをつけて、同じロジックを使用します)

grep -v '^,*$' Input_file 

次のようにawkソリューションでも試してみてください。

awk '!/^,*$/' Input_file 

同じようにsedソリューションで試してください。

sed -n '/^,*$/d;p' Input_file 
+0

こんにちは、これらは動作しません。私はまだカンマしか持たない行を見ることができます –

+0

これらはすべてうまくいきました。cat -v Input_fileを実行して、入力ファイルにキャリッジ文字があるかどうか確認してください。 tr -d '\ r' temp_file && mv temp_file Input_fileはそれがどうなるか教えてください。 – RavinderSingh13

+1

こんにちは、それは働いた!どうもありがとうございます。私のファイルにはキャリッジ文字がありました。 –

2

awk -F, '{p=1}/^,+$/{p=0}p' file 
1

このgrepののみカンマ(少なくとも1つ)を含むすべての行を削除し、あなたが必要な場合は空白行を維持します。私はあなたの要件はコンマのみを含む行を削除することだと考えています。

grep -v "^,,*$" file 

入力

99,abc,123,, 
bcd,123,th 
,,bcd,123,th 
,,,,bcd,123,th 


,,, 
,,,,, 
abc 

出力:

99,abc,123,, 
bcd,123,th 
,,bcd,123,th 
,,,,bcd,123,th 


abc 

あなたも空白行を削除したいなら、あなたは使用することができます。以下のように

grep -v "^,*$" file 
関連する問題