Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
如果第一列中的3549,2152,4701,则删除条目:
样本数据:
加速输出:
如何实现呢?
^匹配行的开头,然后在括号中加上管道符号标记(3549、2152或4701),
请小心在其周围使用单引号,因为否则外壳本身将解释某些特殊字符。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
如果第一列中的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
如何实现呢?
最佳答案
为了使模式仅在第一个字段上匹配,您必须将表达式锚定到行的开头:
grep -v -E '^(3549|2152|4701)\|'
^
标记行的开头(而$
标记行的结尾)-E
激活增强的正则表达式,因此您不必\
转义管道和括号,并且-v反转搜索(仅返回不匹配的行)。^匹配行的开头,然后在括号中加上管道符号标记(3549、2152或4701),
\|
代表管道符号本身,您的第一个字段以该符号结尾,并且需要用反斜杠进行转义,因此它不会被视为另一种交替。请小心在其周围使用单引号,因为否则外壳本身将解释某些特殊字符。
关于linux - 根据第一列的值删除条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44835079/
10-16 10:33