特定の列の特定の値に基づいてファイルから行を除外する

特定の列の特定の値に基づいてファイルから行を除外する

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 -F, '!($2<5 && $3==17)' file

出力:

1234567890123456, 5, 17, cde, Test Test
1234567890123456, 1, 18, cde, Test Test

  • -F,- フィールド区切り記号

  • $2$3- はそれぞれ2番目と3番目のゲームを表します。

答え2

これらの正確な値を除外するには、field-3を使用して常に「17」の共通性を除外します。

awk -F, '!($3 == 17 && ($2 == 1 || $2 == 2 || $2 == 3 || $2 == 4))' < input > output

関連情報