在linux中使用管道时如何打印ps头
这是正常的 ps 输出
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:00 ? 00:00:02 /usr/lib/systemd/systemd
但下面的 ps 命令输出没有标题
$ ps -ef | grep systemd
root 1 0 0 17:00 ? 00:00:02 /usr/lib/systemd/systemd
如何打印第二个命令的 ps 标题?
谢谢
答案1
我的第一反应是这样做
ps -ef | grep UID && ps -ef | grep systemd
,但这也会像这样打印 grep 命令
$ ps -ef | grep UID && ps -ef | grep systemd
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:00 ? 00:00:02 /usr/lib/systemd/systemd
user PID PPID C 23:30 ? 00:00:00 grep systemd
user PID PPID C 23:30 ? 00:00:00 grep UID
我不明白如何只打印标题,因为任何时候执行此操作,正则表达式都会匹配 grep 本身。
答案2
这可以避免 grep 出现在其中
ps -ef > tmpfile.txt; egrep 'UID|systemd' tmpfile.txt; rm tmpfile.txt