我有这样的一行
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
我哪里错了?
答案 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/'