如何/foo/
在且僅在開括號之後插入?
(bar)
應該成為
(/foo/bar)
而(/baz/bar)
應該不是變得(/baz/foo/bar)
答案1
在這個簡單的例子中,你可以嘗試
sed 's,(bar,(/foo/bar,'
答案2
一種複雜的方式,假設你想添加/foo/
到任何括號之間的模式:
$ echo '(bar)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar)
$ echo '(/bar/baz)' | sed 's;(/*\([^(]*\);(/foo/\1;'
(/foo/bar/baz)
該命令說:
選擇括號之間的內容並捕獲它(可以以斜線開頭/
),然後將(
or替換(/
為/foo/
捕獲的模式。
答案3
使用awk
:
awk '/\(bar/ {sub(/bar/, "/foo/bar"); }1' input
和sed
:
sed -E 's%([(])(bar)%\1/foo/\2%' input
這使用反向引用 \1 for(
和 \2 為bar
。