検索と置換にワイルドカードを使用するsedを使用して検索と置換

検索と置換にワイルドカードを使用するsedを使用して検索と置換

sedそのため、ワイルドカードで検索するときも使い方を理解します.*。私が直面している問題は、コマンドの検索と置換の部分で検索と置換にワイルドカードを2回使用する方法です。次の例は、これをよりよく説明するのに役立ちます。

$cat test.txt
a(bc)
a(l)
a(d)
a(loke)
a(babab)
a(h323)
$

_mynewstringその後の内容に文字列を追加したいと思いますa([string of some length]参考にしてください各行に異なる右角かっこがあるので、単に右角かっこを見つけて置き換えることはできませんが(例では省略しました)、どちらも前に一致する左角かっこを持っていませんa。出力は次のようになります。

$cat test.txt
a(bc_mynewstring)
a(l_mynewstring)
a(d_mynewstring)
a(loke_mynewstring)
a(babab_mynewstring)
a(h323_mynewstring)
$

私は以下を試しました。

sed -i 's/a(.*)/a(.*_mynewstring)/g' test.txt

しかし、これは単なる出力であり、

cat test.txt
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)
a(.*_mynewstring)

明らかに、ワイルドカードは私が必要とするのではなくリテラル文字列として扱われますが、徹底的なインターネット検索の後に何をすべきかわかりません。awk、、、およびこれら3つを組み合わせてgrep解決策を試しましたが、成功しませんでした。あなたが提供できる助けに感謝します。

答え1

をエスケープし(てnotを検索します)。一致するグループを維持するために使用されます\1

sed 's/a\(([^)]*\))/a\1_mynewstring)/g' file1

以下を提供します。

a(bc_mynewstring)
a(l_mynewstring)
a(d_mynewstring)
a(loke_mynewstring)
a(babab_mynewstring)
a(h323_mynewstring)

関連情報