0

我有这样一条线

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

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

现在,我sed在此输出上运行以获取分配的地址 (%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

我哪里错了?

4

2 回答 2

1

您可能需要转义+文档):

echo "BR_MALLOC %p File - %s, Func - %s, Line - %u\n" | sed 's/BR_MALLOC\s\+\(\S\+\).*/\1/'
%p
于 2012-06-11T13:16:53.103 回答
1

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

perl -pe 's/BR_MALLOC\s+(\S+).*/$1/'
于 2012-06-11T13:19:28.237 回答