Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过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