2016-09-27 96 views
1

如何使用shell命令(SED或AWK)來替換一個段落在文件如下所示:替換文本段落

bala bala ba1 
balabala. 
leave me here. 

this paragraph 
yes, I'm going 
to be replaced 

The rest contains 
should not be replaced. 

更換後:

bala bala ba1 
balaba. 
leave me here. 

New contains, 
I'm replacement! 

The rest contains 
should not be replaced. 

我聲明包含在變量$OLD中的原始數據,並將新數據包含在另一個變量$NEW中。

回答

4

假設您擁有一個包含新老段落,變量在

$ echo "$old" 
this paragraph 
yes, I'm going 
to be replaced 

$ echo "$new" 
New contains, 
I'm replacement! 

您可以讀取該文件(假設這就是所謂的infile)成猛砸變量和使用參數擴展:

$ contents=$(< infile) 
$ echo "${contents/$old/$new}" 
bala bala ba1 
balabala. 
leave me here. 

New contains, 
I'm replacement! 

The rest contains 
should not be replaced. 

要就地更改文件:

echo "${contents/$old/$new}" > infile.tmp && mv infile.tmp infile 
+0

是的!謝謝,你救了我的一天! – user3593261