我找不到如何制作,我想删除包含ACE和REE的每一行。只有两个单词都存在。
sed -i '/ACE/d' $1
答案 0 :(得分:2)
我建议使用awk,它允许你分别指定两种模式:
awk '!(/ACE/ && /REE/)' file
除了两种图案都匹配的线条外,所有线条都被打印出来。
这种方法的优点在于,无论两个字符串出现的顺序如何,它都能正常工作。
实现"就地"编辑,你可以采用标准方法:
awk '!(/ACE/ && /REE/)' file > tmp && mv tmp file
即。输出到临时文件,然后覆盖源。
答案 1 :(得分:1)
试试这个方法
sed -i '/ACE.*RRE/d' FileName
或者
sed -i '/\(ACE\|CH3\).*\(CH3\|ACE\)/d' FileName
示例:强>
cat sample
<强>输出:强>
336 ACE CH3 1.00
123 ACE 321 test
This ACE for testing CH3
<强>命令:强>
sed '/ACE.*CH3/d' sample
<强>输出:强>
123 ACE 321 test
答案 2 :(得分:1)
如果您需要匹配这两个单词,但您不知道顺序,则需要尝试这两种情况:
sed -i '/\(ABC.*DEF\)\|\(DEF.*ABC\)/d' FileName
它会匹配 ABC.*DEF
或DEF.*ABC
的所有行,然后将其删除。
注意:使用类似于以下的模式,您还将匹配ABC出现2次和DEF 0次的情况,这是不您想要的情况。
sed -i '/\(ABC\|DEF\).*\(ABC\|DEF\)/d' FileName