我只是不明白sed中的模式匹配,更糟糕的是,还有引号作为分隔符。
我有:
cat file | grep \'*.s\'并获取:
'PhaseRayA: ' 'sca/sca_out/sc_ray_a.s'
'PhaseRayO: ' 'sca/sca_out/sc_ray_o.s'作为输出。现在我想提取:
sca/sca_out/sc_ray_a
sca/sca_out/sc_ray_o.s.s所以我的模式应该是'*.s',引号是模式的一部分,但不是想要的结果的一部分。
对此有什么想法吗?我猜赛德会做这份工作,但不知道该怎么做。谢谢你的帮助。一切顺利,安德烈
发布于 2011-03-02 00:41:05
你的问题有点模棱两可,但这应该是我认为你的意思:
sed -e "s/'[^']*' *'//" -e "s/'//" file发布于 2011-03-02 00:52:51
您可能需要考虑awk:
$ 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是为打破记录而构建的。
发布于 2011-03-02 00:55:18
试一试:
sed "s/.*'\([^']*\)'/\1/" inputfile类似地:
sed 's/.*\o47\([^\o47]*\)\o47/\1/' inputfile # that's the letter "o" between the backslash and the 4或
sed 's/.*\x27\([^\x27]*\)\x27/\1/' inputfilehttps://stackoverflow.com/questions/5156893
复制相似问题