テキストファイルの空白のフィールド値を探して行全体を削除するコマンドがあるかどうか疑問に思いました。
例
Hello:Its Me
Hello:How are you
Hello:
Hello:Bye
そして期待される出力
Hello:Its Me
Hello:How are you
Hello:Bye
非常に標準的なケースで、awk
を使用した最も単純なソリューションは次のようになります。
awk -F: '$2 != ""' file
とgrep
:
grep :. file
スキップするつもりならHello:
次のような行を使用できます。
awk -F: '{if($2 != "") print }' input_file
少なくともGNU awkで、どのバージョンのawkでも、何かがtrue
と評価されたときのデフォルトのアクションは印刷することだと思います。したがって、フィールド区切り文字をに設定すると、 :
、2番目のフィールドがある行を印刷するには、必要なのは次のとおりです。
$ awk -F: '$2' file
Hello:Its Me
Hello:How are you
Hello:Bye
ただし、これは2番目のフィールドが空白(スペース、タブなど)の場合も出力しますが、2番目のフィールドが1つまたは複数の場合はnot 2行を出力します0
s、awk
はこれをfalseと評価するため。
削除条件を定義する方が簡単な場合もあります(grep -v
)。最後のフィールドが空の場合の削除の例:
grep -v ':$' file