我需要編輯特定塊中的param值。你能幫助在這個sed命令。我知道有一個perl腳本來做到這一點,但我需要在一個命令sed命令用於搜索多個字符串並替換其中一個字符串
我的文件看起來像這樣
Block 1
Param1=val1
Param2=val2
.
.
Block 2
Param1=val1
Param2=val2
.
.
Block 3
.
.
.
我需要編輯特定塊中的param值。你能幫助在這個sed命令。我知道有一個perl腳本來做到這一點,但我需要在一個命令sed命令用於搜索多個字符串並替換其中一個字符串
我的文件看起來像這樣
Block 1
Param1=val1
Param2=val2
.
.
Block 2
Param1=val1
Param2=val2
.
.
Block 3
.
.
.
您可以用sed的地址:/pattern1/,/pattern2/
只能處理一個「塊」。例如,如果你只是想在Block 1
改變Param1
:
sed -r '/^Block 1/,/^Block 2/s/(\s*Param1=).*/\1NEW/' file
如果你有很多塊,你可以使用^Block 1$
或^Block 1\s*$
。這不會例如獲取混亂:Block 120
這可能會爲你工作(GNU SED):
sed -ri '/^Block/h;G;s/(Param1=)\S+(.*\nBlock 2)$/\1newval\2/;P;d' file
商店當前塊的保留空間和塊變量追加到的每行文件。如果參數和塊變量匹配,則替換新的參數值。打印每一行並刪除塊變量。
N.B.上面的解決方案將替換塊2中的參數1,根據您的需求量身定製解決方案。
您期望的輸出是什麼? – Kalanidhi
替換參數值,如Param1 = modifiedval1 – cms