我想在文本文件中找到的每一个正则表达式模式匹配项中添加空格。
例子:
xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdf
我想匹配“ 1 -2”或“ 2-4”。我想出了这种模式:
[0-9]\s-\s[0-9]
现在,我想在每个匹配项后添加一个空格,如下所示:
xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdf
这对于使用以下工具来说是微不足道的sed
:
$ sed 's/[0-9]\s-\s[0-9]/& /' file
xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdf
所述s/foo/bar/
操作者将取代的第一次出现foo
与bar
该输入文件的每行。如果要匹配给定行上的所有大小写,请使用g
:s/foo/bar/g
。“&
是任何匹配项”,因此s/[0-9]\s-\s[0-9]/& /
将用匹配的内容和单个空格替换正则表达式的第一个匹配项。
请注意,如果您只匹配一个空格(而不是制表符或其他空格),则没有理由使用\s
。只需使用空格:
sed 's/[0-9] - [0-9]/& /' file
最后,要对文件本身进行更改,请使用-i
(假设GNU sed
,其语法在其他实现上略有不同;此外,这将用sed操作的结果替换您的文件。在添加之前,请确保它满足您的要求。-i
):
sed -i 's/[0-9] - [0-9]/& /' file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句