在文件中,a希望替换所有要在括号内出现的点,并用下划线替换。
输入
something.dots {test.test} foo.bar
another.line
预期产量
something.dots {test_test} foo.bar
another.line
实现这一目标的最简单方法是什么?
您可以从以下两个选项中选择最少的sed:
$ cat file
something.dots {test.test} foo.bar {a.a} x
something.dots
$ sed 's|\({[^}]*\)\.\([^}]*}\)|\1_\2|g' file
something.dots {test_test} foo.bar {a_a} x
something.dots
$ sed -E 's|(\{[^}]*)\.([^}]*\})|\1_\2|g' file
something.dots {test_test} foo.bar {a_a} x
something.dots
说明(我将使用最后一种形式,但它们等效):
(\{[^}]*)
:匹配组1,由{
,和任意多个非}
字符组成。
\.
:一个点。
([^}]*\})
:匹配组2,由任意数量的非}
字符组成,后跟一个}
。
如果找到,则将整个表达式替换为[Matching group 1].[Matching group 2]
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句