查找和替换

时间:2009-08-03 11:31:11

标签: regex shell sed

查找:

regexp1 **sometext** regexp2

替换为:

newregexp1 **sometext** newregexp2

在此,我不希望修改**sometext** 也就是说,如果我在文件中有以下行:

Hello somebody! Have a good day.
Hello somebodyelse! Have a good day.

我希望输出为:

Bye somebody! Good night.
Bye somebodyelse! Good night.

我的正则表达式搜索将采用以下形式:

Hello .*! Have a good day.

如何将\1关键字与sed(或任何linux工具)一起使用来实现此目的。
请帮我解释实际的命令语法。

另外,如果你有办法在记事本++中这样做,请告诉我。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

尝试:

sed 's/Hello \(.*\)! Have a good day./Bye \1! Good night./' MyInputFile > MyOutputFile

答案 1 :(得分:0)

echo "Hello somebody! Have a good day" | sed -e 's/Hello \(.*\) Have a good day/Bye \1 Good night./'

但是我对正则表达式如何工作有一些误解,因为你在源文本中使用了“regexp1”。正则表达式是模式,它描述字符串,而不是字符串本身。