bash - 如何修改以下 ps 命令以以逗号分隔值 (CSV) 格式打印?

标签 bash shell csv awk ps

我有以下命令:

ps -e -o pcpu,pmem,args,pid --sort=pcpu | sed '5q' | awk ' {print $1,$2,$3,$4 }'

它的输出是:

%CPU %MEM COMMAND PID
0.0 0.1 /sbin/init 1
0.0 0.0 [kthreadd] 2
0.0 0.0 [ksoftirqd/0] 3
0.0 0.0 [kworker/0:0H] 5

如何修改上面给出的原始命令以 csv 格式打印,如下所示:

   %CPU, %MEM, COMMAND, PID
    0.0, 0.1, /sbin/init, 1
    0.0, 0.0, [kthreadd], 2
    0.0, 0.0, [ksoftirqd/0], 3
    0.0, 0.0, [kworker/0:0H], 5

最佳答案

使用输出字段分隔符 (OFS)。将 OFS=", "; 添加到您的 awk 命令中:

ps -e -o pcpu,pmem,args,pid --sort=pcpu | sed '5q' | awk ' {OFS=", "; print $1,$2,$3,$4 }'

或更短:

ps -e -o pcpu,pmem,args,pid --sort=pcpu | awk 'NR<=5 {OFS=", "; print $1,$2,$3,$4 }'

输出(示例):

%CPU, %MEM, COMMAND, PID
0.0, 0.0, [migration/0], 6
0.0, 0.0, [migration/1], 7
0.0, 0.0, [migration/2], 11
0.0, 0.0, [migration/3], 14

参见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

关于bash - 如何修改以下 ps 命令以以逗号分隔值 (CSV) 格式打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40598853/

相关文章:

linux - 用于多线程文件处理的 Shell 脚本

bash - 如何在 Bash 中并行运行给定函数?

regex - Unix - 如何替换无效字符?

ios - 收集 iPhone GPS 数据

java - 解析csv文件中的空单元格并存储到mysql中

bash - 在循环声明的变量名称时更改 bash 中文本的大小写

bash - 将交互式命令的输出管道输出到 less

python - channel.recv() 在我的 python 脚本和 python 交互式 shell 中表现不同

linux - 如何通过脚本文件更改目录

java - 将 CSV 文件转换为 Java - 向后复制