我需要以特定的方式格式化“ 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)最好有一些与路径长度无关的东西。