linux - 如何在 ps -ef 命令中分隔列

标签 linux bash command

我有命令:

ps -ef | grep kde | tr -s ' ' '@'

我得到这样的输出:

user2131@1626@1584@0@15:50@?@00:00:00@/bin/sh@/usr/bin/startkdeere

如何使用 linux 或 awk 等其他工具获取仅用于列分隔的 @ 符号?

最佳答案

使用 pgrep 来获取 PID,而不是使用 pspgrep 将消除 grep 问题,即您发现的进程之一是 grep 进行过滤。

您还可以使用-o-O 选项指定ps 命令本身的输出。您可以执行此操作来获取所需的字段,并消除 header 。

您还可以使用 read 命令来解析您的输出。唯一可能有空格的字段是最后一个字段——命令和参数。

ps -o uid= -o gid= -o tty= -o args= -p $(pgrep kde) | while read uid gid tty cmd
do
    echo "UID = $uid   PID = $pid   TTY = $tty"
    echo "Command = $cmd"
done

while 将按空格分割,但 $cmd 除外,它将包含所有剩余字段(即带有参数的整个命令)。

ps 命令因平台而异,因此请阅读 ps 上的联机帮助页。

关于linux - 如何在 ps -ef 命令中分隔列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18788054/

相关文章:

bash - zsh 提示 adam2 - 没有换行符的脚本输出,未显示

java - 如何通过 java 程序在远程系统上运行 SSH 命令(后续)

python - 我怎样才能让我写的这个python面板正确地通过管道传输到dzen?

php - 如何对大文件使用 ssh2_scp_recv(内存限制)

linux - sed,替换第一行的第一次匹配

linux - su下如何运行sudo?

command - 如何阻止 ngrok 隧道?

javascript - 如何将批处理文件中写入的dos命令写入javascript

c++ - 从 Qt Creator 运行应用程序给出错误 QXcbConnection 然后中止

python - ': [Errno 2] No such file or directoryile ' in Linux