でsed
終わる行を検索しfoo
た後で始まる次の行を編集するにはどうすればよいですか#bar
?
つまり、#
次の行がで始まり、前の行がで終わる場合は、次の行#bar
のコメントを削除したいと思います。foo
たとえば、
This is a line ending in foo
#bar is commented out
There are many lines ending in foo
#bar commented out again
私は試した:
sed -i 's/^foo\n#bar/foo\nbar/' infile
ベストアンサー1
sed '/foo$/{n;s/^#bar/bar/;}'
お客様のリクエストを文字通り翻訳したものです。n
ですnext
。
これで、次のような場合は機能しません。
line1 foo
#bar line2 foo
#bar
または:
line1 foo
line2 foo
#bar
n
パターン空間にドラッグした線は検索されないためですfoo
。
次の行をパターン空間にインポートしてから、最初に再度繰り返すことでこの問題を解決できます。
sed '
:1
/foo$/ {
n
s/^#bar/bar/
b1
}'