根據某些列中的特定值從文件中排除行

根據某些列中的特定值從文件中排除行

我在 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

若要排除這些精確值,請利用 field-3 排除始終為「17」的共通性:

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

相關內容