Io-Redirection
如何過濾和重定向輸出
我有一個命令會產生大量輸出到 STDOUT,我知道可以通過這種方式將其重定向到文件中:
./myCMD 1>tmp
在將輸出重定向到文件之前如何過濾輸出。例如,我只想重定向那些包含一些關鍵字的輸出行。
如果你的意思是你只想要一些行進入
tmp
文件,而其餘的保持不變:cmd | awk '/pattern/ {print > "tmp"; next} {print}'
或者:
cmd | sed '/pattern/!b w tmp d'
(一行
cmd | sed -e '/pattern/!b' -e 'w tmp' -e d
:)或者:
cmd | sed '/pattern/ { w tmp d }'
(一行
cmd | sed -e '/pattern/{w tmp' -e 'd;}'
:)注意 for
sed
是pattern
一個基本的正則表達式,而 forawk
是一個擴展的正則表達式。
您可以使用管道執行此操作:
./myCMD | grep keyword > tmp
這只會將包含“關鍵字”的行寫入
tmp
文件。如果您想查看完整的輸出,但只將一個子集記錄到文件中,請添加
tee
(假設您的 shell 支持程序替換):./myCMD | tee >(grep keyword > tmp)