特定のフィールドの値に基づいてパイプで区切られたファイルから行を削除する方法は?

特定のフィールドの値に基づいてパイプで区切られたファイルから行を削除する方法は?

次のようにパイプで区切られたファイルがあります。

968666|JOHN|M|DOB
145465|DAVID|M|NULL
898563|SAUL|NULL|DOB
968666|JOHN|F|NULL

列4にNULLを含む行を削除する方法は?

期待される出力

968666|JOHN|M|DOB
898563|SAUL|NULL|DOB

答え1

sed 例:

sed '/\|.*\|.*\|NULL/d' <file>

NULLが常に行末にあるときのsedの例:

sed '/NULL$/d' <file>

答え2

awk -F"|" '{if ($4!~/NULL/) {print $0} }'  file

関連情報