删除所有内容但不包括模式

时间:2017-08-26 18:44:04

标签: sed

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

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

我希望这样做

Hello this is a Pattern
Pattern

由于

1 个答案:

答案 0 :(得分:3)

典型的解决方案是

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

其中\(..\)对是捕获组,\1表示"替换为捕获组(1)"中的内容。您最多可以拥有9个捕获组(在超现代化的seds中可能更多)。

请注意,您也可以使用懒人方法并将目标模式替换为完全匹配,即

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

编辑感谢@Beta,从g删除了多余的s/../../g

IHTH