grepが正しく着色されていません

grepが正しく着色されていません

コマンドの出力をgrepにパイプしようとしています。

$ strace a.out | grep --color=always "mmap"

ただし、straceの色が指定されていない出力のみを出力します。

...
mmap(NULL, 503808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa42389d000
write(1, "got memory: (address=0x7fa42389d"..., 37got memory: (address=0x7fa42389d010)
) = 37
mmap(NULL, 503808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa423822000
write(1, "got memory: (address=0x7fa423822"..., 37got memory: (address=0x7fa423822010)
) = 37
mmap(NULL, 503808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa4237a7000
write(1, "got memory: (address=0x7fa4237a7"..., 37got memory: (address=0x7fa4237a7010)
) = 37
mmap(NULL, 503808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa42372c000
write(1, "got memory: (address=0x7fa42372c"..., 37got memory: (address=0x7fa42372c010)
) = 37

ここは着色されていませんが、そうする必要があります。達成する方法?

答え1

strace出力は標準エラーストリームにあるため、以下を使用してください。

strace a.out 2>&1 | grep --color=always -- 'mmap';

またはbash使用している場合

strace a.out |& grep --color=always -- 'mmap';

利用可能なすべての出力が必要な場合:

strace a.out |& grep --color=always -E -- 'mmap|';

また、見ることができますパイプSTDERRとSTDOUT詳細については。

関連情報