根据第一列的值删除条目

时间:2017-06-29 21:12:01

标签: linux shell

如果第一栏中有3549,2152,4701,则删除条目:

示例数据:

18106|1.0.4.0/22
3549|1.0.10.0/24
5413|1.0.0.0/16
2152|1.4.0.0/16
3549|1.0.8.0/22
4701|1.0.0.0/8

加急输出:

18106|1.0.4.0/22
5413|1.0.0.0/16

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

要使您的模式仅匹配第一个字段,您必须将表达式锚定到该行的开头:

grep -v -E '^(3549|2152|4701)\|'

^标记了该行的开头(而$将标记该行的结尾)

-E激活增强的正则表达式,因此您不必\转义管道和括号,-v反转搜索(仅返回不<的行/ em>匹配)。

^匹配行的开头,然后括号与管道符号标记替代(3549,2152或4701),\|代表管道符号本身,您的第一个字段结束,并且需要通过反斜杠逃脱,所以它不被视为另一个替代。

小心使用它周围的单引号,否则shell本身将解释一些特殊字符。