首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令行命令,用于为regex匹配追加空格。

命令行命令,用于为regex匹配追加空格。
EN

Unix & Linux用户
提问于 2016-09-19 15:22:42
回答 1查看 424关注 0票数 1

我想在文本文件中找到的regex模式的每个匹配中添加空格。

示例:

代码语言:javascript
复制
xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdf

我想要匹配‘1-2’或‘2-4’。我想出了一个模式:

代码语言:javascript
复制
[0-9]\s-\s[0-9]

现在,我想在每一场比赛中添加一个空白,如下所示:

代码语言:javascript
复制
xadsfa 1 - 2  --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4  --- --- --- asdf
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-09-19 15:30:31

对于像sed这样的工具来说,这是很简单的:

代码语言:javascript
复制
$ sed 's/[0-9]\s-\s[0-9]/& /' file
xadsfa 1 - 2  --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4  --- --- --- asdf

s/foo/bar/操作符将在输入文件的每一行上用bar替换foo的第一次出现。如果要匹配给定行上的所有情况,请使用gs/foo/bar/g&是“匹配的东西”,所以s/[0-9]\s-\s[0-9]/& /将用匹配的内容和单个空格替换正则表达式的第一次匹配。

注意,如果您只是匹配单个空格(不是制表符或其他空格),就没有理由使用\s。只需使用空格:

代码语言:javascript
复制
sed 's/[0-9] - [0-9]/& /' file

最后,要对文件本身进行更改,请使用-i (这假设GNU sed,其他实现的语法略有不同;而且,这将用sed操作的结果替换您的文件。确保它在添加-i之前完成了所需的操作):

代码语言:javascript
复制
sed -i 's/[0-9] - [0-9]/& /' file
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/310867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档