Pad AWK柱
试图解析BSDPad AWK柱,awk,sed,Awk,Sed,试图解析BSDtop输出,以仅显示特定进程的PID-COMMAND-MEM $ top -l 1 | grep -E '%CPU\ |coreaudio' PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG 354 com.apple.audio. 0.0 00:00.00 2 1 12 820K 0B 296 com.apple.audio. 0.0 00:00.03 2
top
输出,以仅显示特定进程的PID-COMMAND-MEM
$ top -l 1 | grep -E '%CPU\ |coreaudio'
PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG
354 com.apple.audio. 0.0 00:00.00 2 1 12 820K 0B
296 com.apple.audio. 0.0 00:00.03 2 1 38 2024K 0B
282 coreaudiod 0.0 03:25.05 94 2 736 21M 0B
用于仅显示列$1-$2
$ top -l 1 | grep -E '%CPU\ |coreaudio' | awk {'print $1" -- "$2'}
PID -- COMMAND
354 -- com.apple.audio.
296 -- com.apple.audio.
282 -- coreaudiod
添加第三列会与“列”混淆,因为第二列没有填充
$ top -l 1 | grep -E '%CPU\ |coreaudio' | awk {'print $1" -- "$2" -- "$8'}
PID -- COMMAND -- MEM
354 -- com.apple.audio. -- 820K
296 -- com.apple.audio. -- 2024K
282 -- coreaudiod -- 21M
如何“填充”列以保持“布局”完好无损?或者我应该使用不同的工具,比如
注
使用
top-l 1
可以在字符串中填充一些“恒定”的空格:
<<<$input awk '{printf "%-20s %-10s %-4s\n", $1, $2, $8}'
# ^^ ^^ ^ field width
# ^ ^ ^ left justify
您是否有
列
?是的,尝试将awk
列配管到列
,但未能成功!两个都很好!(将second设置为20widt;)你知道这是否可以像column-t
那样完成吗,所以“尽可能小”,但使用awk
,没有任何静态数字?不,至少不容易。您可以在awk
中重新设计column
功能,我见过这样做的脚本(主要是在没有column的系统上)。。。但这只是重新发明轮子。不管怎样,这都很简单——只需将每一列保持在一个单独的数组中,获得每一数组中元素的最大长度,然后对每一列执行printf“%-”maximum\u legnth\u fo\u elements\u in\u array1“s”,array1[i]
。我怀疑那会“更小”<代码>尽可能小-Unix理念是一个工具完成一项工作<代码>awk过滤列<代码>列格式化输出。
<<<$input awk '{print $1, $2, $8}' | column -t