2017-10-12 65 views

回答

0

sed可以用逗號分隔的一組正則表達式匹配多行。並用c命令替換範圍內的所有內容。要使c命令不忽略前導空白,請在後面使用反斜槓。例如

sed -i.original '/^ something $/,/-----------$/c\ other \n-------' input-filename 
1

這可能爲你工作(GNU SED):

sed -i '/^ something $/{:a;N;/^--*$/M!ba;s/something/other/}' file 

聚集起來的開始和結束標記之間的線,然後更換了替代的所需的字符串。

N.B.使用M標誌在多行中進行精確匹配。

1

sed的是個人行簡單的換人,這是所有,其他的事,你應該用awk:

$ awk 'n{$0=substr($0,1,n); n=0} {sub(/^ something $/," other "); n=length()}1' file 
other 
------- 

,將與在任何UNIX系統中任何shell awk的任何工作。