発生回数を計算し、一致する値を持つ行を削除します。

発生回数を計算し、一致する値を持つ行を削除します。

私の問題を解決するのに役立ちますか?次のファイルがあります(カンマ区切り)。

A,250,13,820,0,80,201  
B,0,0,0,0,3,0  
C,0,2,1,0,0,0  
D,0,1,105,0,0,10  

5つの実際のゼロ値を持つ行(この場合は行B)を削除したいと思います。最終ファイルは次のようにする必要があります。

A,250,13,820,0,80,201  
C,0,2,1,0,0,0  
D,0,1,105,0,0,10

すべてのゼロが常に考慮されるため、コードを書くのに問題がありますawk(各行には5つのゼロ値がありますが、行Bには5つの実際のゼロがあります)。スクリプトがあれば簡単になりますかperl

ベストアンサー1

Perlが救出に来る!

perl -aF, -ne 'print unless 5 == grep /^0$/, @F;' < input > output
  • -n入力を1行ずつ読みます。
  • -a各行を @F 配列に分割する
  • -F分割方法の指定(この場合はカンマ)
  • grepヒット数を返すためにスカラーコンテキストで使用されます。

おすすめ記事