Unixでファイルnのコンマ区切りの特殊値を使用してレコードを削除する方法

Unixでファイルnのコンマ区切りの特殊値を使用してレコードを削除する方法

Unixでファイルnのコンマ区切りの特殊値を使用してレコードを削除する方法

私のデータ

100,india,*,*,P,45000,location
200,india,*,*,*,45000,location
300,india,*,*,P,45000,location
400,india,*,*,*,45000,location

Pが5番目の場所に関係なく、このレコードを削除したいと思います。希望の出力

200,india,*,*,*,45000,location
400,india,*,*,*,45000,location

答え1

次のようにしてみてください。

awk -F, '{if ($5 != "P") { print $0 }}' /path/to/input-file

答え2

/linuxタグを使用するため、GNUが必要ですsed

sed -i -E '/^([^,]*,){4}P/d' data.txt
  • -iその場でファイルを編集
  • -E読みやすくするために拡張正規表現を使用してください。
  • [^,]*コンマなしでシーケンスと一致するので
  • ^([^,]*,){4}最初の4つのフィールドの一致
  • 後ろにaが続く場合は、その行を削除してくださいPd

関連情報