パターンの最初の文字の後にテキストを挿入する

パターンの最初の文字の後にテキストを挿入する

/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)

注文内容は次のとおりです。

角かっこの間にある項目を選択し、それをキャプチャ(スラッシュで始めることができる/)またはキャプチャされたパターンに(置き換えます。(//foo/

答え3

使用awk:

awk '/\(bar/ {sub(/bar/, "/foo/bar"); }1' input

そしてsed

sed -E 's%([(])(bar)%\1/foo/\2%' input

これは逆参照\ 1、(およびには \ 2を使用しますbar

関連情報