使用 GNU sed 在插入或附加的行中重用匹配的模式
Reuse matched pattern in inserted or appended line with GNU sed
我正在尝试使用 sed 在模式之前(或之后)插入(或附加)一行。
也许 awk 会更简单,但我不熟悉它。
这里是输入
bar
wow
hee
以及想要的输出:
bar
something
foobar
wow
something
foowow
hee
something
foohee
我用 GNU sed 尝试了以下操作:
sed '/^\(bar\|wow\|hee\)/a something\nfoo' input
但它打印了 1
而不是匹配的模式。
实际上,我想打印以 bar|wow|hee
.
开头的整行
您可以像这样使用替换:
sed 's/^\(bar\|wow\|hee\)/&\n something\nfoo&/' input
这将用 self 替换已创建的模式,然后......然后再次 self。
awk 来拯救!
$ awk '/^(bar|wow|hee)$/{print [=10=] RS "something" RS "foo" [=10=] RS}'
sed 不仅可以搜索和替换:https://www.gnu.org/software/sed/manual/sed.html
sed '/^\(bar\|wow\|hee\)/ {
p
i\something
s/^/foo/
}' file
我正在尝试使用 sed 在模式之前(或之后)插入(或附加)一行。
也许 awk 会更简单,但我不熟悉它。 这里是输入
bar
wow
hee
以及想要的输出:
bar
something
foobar
wow
something
foowow
hee
something
foohee
我用 GNU sed 尝试了以下操作:
sed '/^\(bar\|wow\|hee\)/a something\nfoo' input
但它打印了 1
而不是匹配的模式。
实际上,我想打印以 bar|wow|hee
.
您可以像这样使用替换:
sed 's/^\(bar\|wow\|hee\)/&\n something\nfoo&/' input
这将用 self 替换已创建的模式,然后......然后再次 self。
awk 来拯救!
$ awk '/^(bar|wow|hee)$/{print [=10=] RS "something" RS "foo" [=10=] RS}'
sed 不仅可以搜索和替换:https://www.gnu.org/software/sed/manual/sed.html
sed '/^\(bar\|wow\|hee\)/ {
p
i\something
s/^/foo/
}' file