2009-08-03 192 views
0

查找:查找和替換

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工具)來實現此目的。
請幫助我使用實際的命令語法。

另外,如果你有辦法在記事本++中做到這一點,請讓我知道。

感謝您的幫助!

回答

1

嘗試:

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

請注意,您可以使用`sed -i's/pat1/pat2 /'`執行替換文件 - 最好先檢查替換是否正確(可能是輸出到stdout)。 – Cascabel 2009-08-03 16:38:02

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

但我感到在如何正則表達式工作的一些誤解,因爲你在源文本中使用「regexp1」。正則表達式是模式描述字符串,而不是字符串本身。