Linux サーバー CentOS 7 に、次の形式のエントリが多数含まれたテキスト ファイルがあります。
1234567890123456, 1, 17, cde, Test Test
1234567890123456, 2, 17, cde, Test Test
1234567890123456, 3, 17, cde, Test Test
1234567890123456, 4, 17, cde, Test Test
1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
1234567890123456, 1, 17, cde, Test Test
削除するにはどのコマンドを使用すればよいですか
1, 17
2, 17
3, 17
4, 17
結果は
1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
答え1
awkアプローチ:
awk -F, '!($2<5 && $3==17)' file
出力:
1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test
-F,
- フィールドセパレータ$2
、$3
- それぞれ2番目と3番目のフィールドを表します
答え2
フィールド 3 の除外が常に「17」であるという共通性を利用して、それらの正確な値を除外するには、次のようにします。
awk -F, '!($3 == 17 && ($2 == 1 || $2 == 2 || $2 == 3 || $2 == 4))' < input > output