根据某些列中的特定值从文件中排除行

根据某些列中的特定值从文件中排除行

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

相关内容