0

私はこのような行を持っています

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

これは実際には、malloc されたアドレス、カスタム mallocBR_MALLOCが呼び出されたファイルなどを出力する C プログラムの行です。

今、私は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

どこが間違っていますか?

4

2 に答える 2

1

+( docs )をエスケープする必要がある場合があります。

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 に答える