角かっこ間のテキストを置き換える

角かっこ間のテキストを置き換える

私はawk '{ gsub(/BAR|WIBBLE/, "FOO"); print }'次のデータのテキストを置き換えるために使用します。

SOMETHING [BAR, WIBBLE]
SOMETHING [BAR]

これにより、望ましい結果が得られます。

SOMETHING [FOO, FOO]
SOMETHING [FOO]

ただし、置き換える必要があるテキストを次のように更新する必要があります。

awk '{ gsub(/BAR|WIBBLE|ME/, "FOO"); print }'

これにより、テキストは次のように変更されます。

SOMETHING [ME, WIBBLE]

入力する:

SOFOOTHING [FOO, FOO]

角かっこ間のテキストにのみ置換を制限するにはどうすればよいですか(つまり、そのテキストを保持しますかSOMETHING?)

編集する

また、強力なテキストが必要ですSOMETHING(例:SHE GAVE ME THAT置き換えてはいけませんME)。

ベストアンサー1

必ずそうでしょうかawk?代替の代替部分が関数呼び出しである可能性がある他の言語でははるかに簡単です。例えばperl:

perl -pe 'sub c{$s=shift;$s=~s/BAR|WIBBLE|ME/FOO/g;$s}s/\[.*?\]/c$&/ge' 

おすすめ記事