首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用set提取匹配的模式,并使用‘作为模式分隔符

使用set提取匹配的模式,并使用‘作为模式分隔符
EN

Stack Overflow用户
提问于 2011-03-01 23:55:48
回答 3查看 1.1K关注 0票数 0

我只是不明白sed中的模式匹配,更糟糕的是,还有引号作为分隔符。

我有:

代码语言:javascript
复制
 cat file | grep \'*.s\'

并获取:

代码语言:javascript
复制
'PhaseRayA:      '       'sca/sca_out/sc_ray_a.s'
'PhaseRayO:      '       'sca/sca_out/sc_ray_o.s'

作为输出。现在我想提取:

代码语言:javascript
复制
sca/sca_out/sc_ray_a
sca/sca_out/sc_ray_o.s.s

所以我的模式应该是'*.s',引号是模式的一部分,但不是想要的结果的一部分。

对此有什么想法吗?我猜赛德会做这份工作,但不知道该怎么做。谢谢你的帮助。一切顺利,安德烈

EN

回答 3

Stack Overflow用户

发布于 2011-03-02 00:41:05

你的问题有点模棱两可,但这应该是我认为你的意思:

代码语言:javascript
复制
sed -e "s/'[^']*' *'//" -e "s/'//" file
票数 0
EN

Stack Overflow用户

发布于 2011-03-02 00:52:51

您可能需要考虑awk:

代码语言:javascript
复制
$ cat test.txt
'PhaseRayA:      '       'sca/sca_out/sc_ray_a.s'
'PhaseRayO:      '       'sca/sca_out/sc_ray_o.s'

$ awk -F "'" '{print $4}' test.txt
sca/sca_out/sc_ray_a.s
sca/sca_out/sc_ray_o.s

我倾向于使用sed来编辑文件,而使用awk来处理它们。awk是为打破记录而构建的。

票数 0
EN

Stack Overflow用户

发布于 2011-03-02 00:55:18

试一试:

代码语言:javascript
复制
sed "s/.*'\([^']*\)'/\1/" inputfile

类似地:

代码语言:javascript
复制
sed 's/.*\o47\([^\o47]*\)\o47/\1/' inputfile    # that's the letter "o" between the backslash and the 4

代码语言:javascript
复制
sed 's/.*\x27\([^\x27]*\)\x27/\1/' inputfile
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5156893

复制
相关文章

相似问题

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