如何从 ps 中删除中间行?

How remove middle of lines from ps?

我正在努力使 ps -ef 的输出在 Red Hat Linux 上更具可读性。我知道这个问题已经被问过很多次了,但我有几个 java 进程需要经常监控,每个进程的行长度至少为 500 个字符,但每行的长度不同。我需要前 14 个字符,以便获取 pid 和同一行的最后 40 个字符来获取名称。

到目前为止我得到的是:

ps -ef | grep -v 'eclipse' | grep java | cut -c1-14

删除我的 运行 的 Eclipse 副本,然后获取其他 java 进程,然后切入该行的第一部分。

我知道如何使用 rev 剪切的两侧来获得最后一部分,但我不知道如何将两者组合在一起。

可以给cut几个区域剪,但是不能从最后剪,所以要剪最后40个字符,需要提前知道行长。

我建议使用更强大的工具,例如 gawk:

ps -ef|gawk '
/eclipse/ {next}
/java/ {
    printf("%-10s %8s ...%s\n", , , substr([=10=],length()-40));
}'

这还允许您很好地格式化输出。