2014-10-10 3 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 процесс самостоятельно.

Смежные вопросы