![](/img/trans.png)
[英]sed to replace same patterns that have slightly different ending to the string
[英]Different replacements for different patterns in sed
我需要在文件的每一行中替換兩個模式。 讓我們說例如該文件包含以下內容:
pattern1 a1 b1 c1
pattern2 a2 b2 c2
pattern1 a1 b1 c1
基本上,出現“pattern1”的任何地方,a1需要替換為b2的a2和b1,依此類推。 但是,我也想將pattern1更改為pattern2。
到目前為止,我有一些接近的東西:
/pattern1/ s/a1 b1 c1/a2 b2 c2/
注意,我想將整個sed腳本保存在一個文件中。
更新所需的輸出,這可能不是最好的例子,我會回答任何問題。
pattern2 a2 b2 c2
pattern2 a2 b2 c2
pattern2 a2 b2 c2
有各種方法可以做到這一點。
sed -e '/pattern1/{
s/a2/a1/
s/b2/b1/
s/c2/c1/
s/pattern1/pattern2/
}' "$@"
您通常可以使用分號代替換行符將其折疊為單行(但是某些版本的sed
比其他版本更為繁瑣)。 在這種情況下, -e
並非絕對必要。
從'a1'是否應該用'a2'代替,反之亦然,這個問題並不完全清楚; 這段代碼的作用是“a1需要替換為a2”(意思是“用a1替換a2的出現次數”),但是這個例子暗示了相反的替換。 如果需要其他含義,則使用s/a1/a2/
而不是s/a2/a1/
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.