我想在文本文件中找到的regex模式的每个匹配中添加空格。
示例:
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发布于 2016-09-19 15:30:31
对于像sed这样的工具来说,这是很简单的:
$ sed 's/[0-9]\s-\s[0-9]/& /' file
xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdfs/foo/bar/操作符将在输入文件的每一行上用bar替换foo的第一次出现。如果要匹配给定行上的所有情况,请使用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]/& /' filehttps://unix.stackexchange.com/questions/310867
复制相似问题