我有興趣在grep
輸出中保留輸入的標題,就像在Include header in the 'grep' result這個問題中一樣。爲什麼到命令組的管道只能用於某些命令?
雖然工作解決方案(使用sed
)在問題中出現,但answer with most upvotes引起了我的注意。例如,它允許使用grep --color
。這表明管道輸入到command group與命令head
和grep
,如:
ps -ef | { head -1; grep python; }
然而,寫在鏈接的答案和註釋,這並不適用於所有的命令在管道的左側工作。它適用於ps
或lsof
,但不適用於df
,ls
等。當使用它們時,只有該組中的第一命令的輸出被打印:
$ df | { head -1; grep '/'; }
Filesystem 1K-blocks Used Available Use% Mounted on
$
任何人都可以解釋爲什麼管道的命令組僅適用於某些命令?有什麼辦法可以使它普遍工作嗎?
一般來說,我認爲你不應該依賴接收任何輸入的第二個命令。 –
您可以使用'awk'打印第一行或匹配的行......'ps -ef | awk'NR == 1 || /蟒/'' –