一些程序的输出以列名(例如ps a
)开头:
$ 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
现在,假设我想找出阿吉蒂的出现
$ 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
但是,当我不知道有多少头行时,这并不能解决我的问题。是否有一种方法来获取标头和匹配的行,或者有一些简短的解决方法来实现这一点?
发布于 2014-10-10 00:44:55
这个有用吗?
ps ..|awk '/yourpattern/ ||!/^\s*[0-9]/'
将yourpattern
填入位置。
另外,您可以执行ps ...|awk '/agett[y]/ ||....
而不是/agetty/
来过滤awk
进程。
https://stackoverflow.com/questions/26295141
复制相似问题