使用sed提取特定单词

时间:2012-06-11 13:11:06

标签: regex linux sed

我有这样的一行

BR_MALLOC %p File - %s, Func - %s, Line - %u\n

这实际上是来自C程序的一行,它输出了malloced地址,调用自定义malloc BR_MALLOC的文件等等。

现在,我在此输出上运行sed以获取malloced地址(%p)

我试过这个正则表达式

$ echo "BR_MALLOC %p File - %s, Func - %s, Line - %u\n" | sed 's/BR_MALLOC\s+\(\S+\).*/\1'

预期产出

%p

我得到的输出是

BR_MALLOC %p File - %s, Func - %s, Line - %un

我哪里错了?

2 个答案:

答案 0 :(得分:1)

您可能需要转义+docs):

echo "BR_MALLOC %p File - %s, Func - %s, Line - %u\n" | sed 's/BR_MALLOC\s\+\(\S\+\).*/\1/'
%p

答案 1 :(得分:1)

不了解sed,但使用perl你的表达式几乎可以正常工作:

perl -pe 's/BR_MALLOC\s+(\S+).*/$1/'