2016-11-14 69 views
1

我有以下命令:如何修改以下ps命令以逗號分隔值(CSV)格式打印?

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 

回答

2

美國輸出字段分隔符(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