Linux 根据第一列的值删除条目
如果第一列中有354921524701,则删除该条目: 样本数据:Linux 根据第一列的值删除条目,linux,shell,Linux,Shell,如果第一列中有354921524701,则删除该条目: 样本数据: 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)\|' ^标记行的开
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),而\\\124;
表示管道符号本身,第一个字段以该符号结尾,需要用反斜杠转义,因此它不会被视为另一个可选项
注意在其周围使用单引号,否则shell本身将解释一些特殊字符。使用grep/egrep非常简单。你在坚持什么?我试着用grep-v来做,但是我如何定义它只在第一个字段中起作用?