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が続く場合は、その行を削除してください
P
。d