ファイル内の一部の文字列を置換する必要がありますが、文字列が中括弧の中にある場合は、スキップする必要があります。これは、中括弧で包まれていない文字列の中だけのfooを検索する必要があり中括弧以外のファイル内の文字列を置換する
bar foo {foobar}bar {foo}
:
sed -i '/[^{].*foo.*[^}]/ s/foo/bar/g' test.f
テストファイルtest.fのようなものは次のようなものが含まれています。その結果は次のようになります。括弧内
bar bar {foobar}bar {foo}
すべてが文字列が行に「{」が対応するまで無視されなければならない「}」で始まる、すなわちならば、無視されるべきです。
これはsedで実行する必要はありません。どうもありがとう。
サンプル入力:
bar foo {foobar}bar {foo}
foo { foo { foo } foo } foo
foo { foo } foo { foo } foo
予想される出力:ちょうど楽しみのため
bar bar {foobar}bar {foo}
bar { foo { foo } foo } bar
bar { foo } bar { foo } bar
'bar {foo'や' foo} bar'のような文字列はどうすればよいですか? – choroba
ネストされた括弧はどうなりますか? 'foo {foo {foo} foo} foo'と' foo {foo} foo {foo} foo'です。 – choroba
上記のコメントで質問された内容で質問を更新してください。質問そのものは現時点ではっきりしていません。 –