2017-08-26 94 views
0

我这样做,它会删除包括模式在内的所有内容。我希望它不会删除该模式。删除一切,但不包括模式

sed -i '' 's/.*Pattern//g' file 

我想它这样做

Hello this is a Pattern 
Pattern 

由于

回答

3

典型的解决方案是

sed -i '' 's/.*\(Pattern\)/\1/' file 
#--------------^^-------^^-^^ 

其中\(..\)对是捕获基团,并且\1指示“替换捕获组(1)中发现的内容”。你可以有多达9个捕获组(maye更多超现代seds)。

注意,你也可以做lazymans方法,并与你的目标模式替换完全吻合,即

sed -i '' 's/.*Pattern/Pattern/' file 

编辑并感谢@Beta,从s/../../g去除冗余g

IHTH

+0

'g'的用途是什么?看起来多余。 – Beta