【发布时间】:2015-10-22 20:17:06
【问题描述】:
我有一个文本文件,其中一行内容如下:
<div id="page_footer"><div><? print('Any phrase's characters can go here!'); ?></div></div>
我想使用sed 或awk 来提取上面的单引号之间的子字符串,所以它只是打印...
Any phrase's characters can go here!
我希望像上面那样对短语进行分隔,从单引号开始,到单引号结束,紧接着是括号,然后是分号。以下带有捕获组的 sed 命令似乎对我不起作用。有什么建议吗?
sed '/^<div id="page_footer"><div><? print(\'\(.\+\)\');/ s//\1/p' /home/foobar/testfile.txt
【问题讨论】:
-
除非您使用 unicode 或其他字符集以使撇号与单引号不完全相同,或者使用其他形式的上下文或锚点,否则这将是模棱两可的。但是,您可以改为在
('和')序列之间获取文本。很可能,您的sed版本与您尝试在那里使用的正则表达式语法实现不同... -
是的,使用
('和')作为锚点就可以了。有关如何使用 sed 或 awk 最好地实施此解决方案的任何建议?