我有這樣提取特定的詞使用的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
我要去哪裏錯了?
你能解釋一下爲什麼你添加了'?',以及你指的是什麼貪婪的匹配? –
我試過你的建議,我得到這個錯誤 's':'s'命令的RHS上的'sed:-e表達式#1,字符28:無效引用\ 1。如果我脫掉'-r',則發生舊的輸出。即'''不起作用:( –
)如果你確定你已經正確複製並粘貼了,那麼我們的'sed'版本的行爲就會有所不同。嘗試從'\('和'\)'轉義出來我的GNU sed版本4.2.1) –