首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed命令中的正则表达式

sed命令中的正则表达式
EN

Stack Overflow用户
提问于 2016-01-05 19:40:15
回答 2查看 242关注 0票数 0

我想使用sed命令来更改文件中的一个参数(确切地说是宽度)。在这种情况下,它是用于运动检测运动程序中的motion.conf。

我已经写了行替换的命令,但它不工作,因为我希望它工作。这是命令:

代码语言:javascript
复制
sudo sed 's/width [0-9]/change/g' /etc/motion/motion.conf

仅当我编写了[0-9]时,行的选择才起作用。如果我放置[0-9]+,命令将不再起作用。

你能告诉我怎么用吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-01-05 19:45:09

您所要做的就是避开+

代码语言:javascript
复制
$ cat a
xxx width 0 hallo
xxx width 12 hallo
$ sed 's/width [0-9]\+/change/g' a
xxx change hallo
xxx change hallo

您可以找到GNU sed here的正则表达式语法。

票数 3
EN

Stack Overflow用户

发布于 2016-01-05 20:48:37

请注意,sed默认使用POSIX BRE (基本正则表达式)语法。在POSIX规范中,+并不存在,但是许多linux实现都添加了它。要获得更便于移植的模式,您可以这样写:

代码语言:javascript
复制
sed 's/width [0-9][0-9]*/change/g'

代码语言:javascript
复制
sed 's/width [0-9]\{1,\}/change/g'

但是在一些旧版本中不支持大括号限定符。

您还可以将正则表达式语法切换为ERE (扩展正则表达式),它支持+限定符,并且不需要转义:

代码语言:javascript
复制
sed -r 's/width [0-9]+/change/g'

( -r选项可能有所不同(例如:-E__),具体取决于您的sed版本。)

你可以看看这些语法here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34610866

复制
相关文章

相似问题

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