テキストファイルの空のフィールド値を見つけて、1行全体を削除できるコマンドがあるかどうか疑問に思います。
はい
Hello:Its Me
Hello:How are you
Hello:
Hello:Bye
と予想出力
Hello:Its Me
Hello:How are you
Hello:Bye
答え1
非常に標準的な場合、最も簡単な解決策awk
は次のとおりです。
awk -F: '$2 != ""' file
そしてgrep
:
grep :. file
答え2
Hello:
数行をスキップするには、次の方法を使用できます。
awk -F: '{if($2 != "") print }' input_file
答え3
少なくともGNU awkでは、すべてのバージョンのawkで何かを評価するときのデフォルトの動作はtrue
印刷するものだと思います。したがって、フィールド区切り文字をに設定した場合、:
2番目のフィールドを持つ行を印刷するには、次の操作を実行します。
$ awk -F: '$2' file
Hello:Its Me
Hello:How are you
Hello:Bye
ただし、2番目のフィールドが空白(スペースやタブなど)の場合も印刷されます。いいえ0
2番目のフィールドが1つ以上のsの場合はawk
falseと評価され、その行を印刷します。
答え4
時には削除条件()を定義する方がgrep -v
簡単です。最後のフィールドが空の場合の削除の例:
grep -v ':$' file