如果第一栏中有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
如何实现这一目标?
答案 0 :(得分:1)
要使您的模式仅匹配第一个字段,您必须将表达式锚定到该行的开头:
grep -v -E '^(3549|2152|4701)\|'
^
标记了该行的开头(而$
将标记该行的结尾)
-E
激活增强的正则表达式,因此您不必\
转义管道和括号,-v反转搜索(仅返回不<的行/ em>匹配)。
^匹配行的开头,然后括号与管道符号标记替代(3549,2152或4701),\|
代表管道符号本身,您的第一个字段结束,并且需要通过反斜杠逃脱,所以它不被视为另一个替代。
小心使用它周围的单引号,否则shell本身将解释一些特殊字符。