2014-10-10 916 views
0

一些程序的輸出開始列名(例如,ps a):如何在使用grep時保留列標題?

$ ps a 

    PID TTY  STAT TIME COMMAND 
1306 tty1  Ss+ 0:00 /sbin/mingetty /dev/tty1 
1318 hvc0  Ss+ 0:00 /sbin/agetty hvc0 38400 vt100-nav 
14696 pts/0 Ss  0:00 -bash 
15283 pts/0 R+  0:00 ps a 

現在,讓我們說,我想找到的agetty的一個匹配的字符串

$ ps a | grep agetty 

1318 hvc0  Ss+ 0:00 /sbin/agetty hvc0 38400 vt100-nav 
15339 pts/0 S+  0:00 grep agetty 

,我就必須看到ps a的輸出開始,我不知道ps a | grep agetty的輸出是什麼意思。

我可以打印的第一行,然後匹配的行:

$ ps a | head -n1; ps a | grep agetty 

    PID TTY  STAT TIME COMMAND 
1318 hvc0  Ss+ 0:00 /sbin/agetty hvc0 38400 vt100-nav 
15542 pts/0 S+  0:00 grep agetty 

然而,這並沒有解決我的問題的時候,我不知道有多少標題行也有。 有沒有一種方法來獲取標題和匹配的行,或者一些簡短的解決方法來實現?

回答

0

這會幫助嗎?

ps ..|awk '/yourpattern/ ||!/^\s*[0-9]/' 

填充yourpattern到位。

你也可以做ps ...|awk '/agett[y]/ ||....而不是/agetty/來過濾awk進程自己出來。

相關問題