我需要以特定方式格式化命令“ps x”的输出,以便删除进程前面的路径名,可能使用 awk 或 sed。
例如:如果命令“ps x”给出以下输出:
$ps x
21379 ? S 0:00 /home/something/etc/processA
21381 ? Sl 0:00 /home/something/bin/nameB -log /home/something/log/nameB/log.ttyS7 /dev/ttyS7
我想要如下输出:
21379 ? S 0:00 processA
21381 ? Sl 0:00 nameB -log /home/something/log/nameB/log.ttyS7 /dev/ttyS7
另外,最好知道如何获得:
21379 ? S 0:00 processA
21381 ? Sl 0:00 nameB
到目前为止,我做了一些依赖于路径长度的事情,而且我必须删除 grep 进程。
$ps x | grep -v grep | grep -e processA -e nameB | awk -F '[/]' {'print $1" "$2" "$3" "$4" "$5'} | awk {'print $1" "$2" "$3" "$4" "$8'}
这使
21379 ? S 0:00 processA
21381 ? Sl 0:00 nameB
由于遗留代码的原因,我不能使用“ps -e -o pid,tty,stat,time,comm”。
更新 1)最好有一些与路径长度无关的东西。