空のフィールド値を持つ行をGrepして削除します。

空のフィールド値を持つ行をGrepして削除します。

テキストファイルの空のフィールド値を見つけて、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番目のフィールドが空白(スペースやタブなど)の場合も印刷されます。いいえ02番目のフィールドが1つ以上のsの場合はawkfalseと評価され、その行を印刷します。

答え4

時には削除条件()を定義する方がgrep -v簡単です。最後のフィールドが空の場合の削除の例:

grep -v ':$' file

関連情報