我正在尝试编写一个脚本,将 CPU 利用率和内存利用率结果打印到 csv 文件。但我只想打印位于名为“CPU”、“USERNAME”和“MEMORY”的特定列中的值。
能否请您告诉我如何使用 awk 脚本实现相同的效果?使用 awk,我发现 awk'{print $2,$5}' 打印第 2 列和第 5 列的值。但我想通过提供列名而不是列号来打印值。
有可能这样做吗?
我编写的示例脚本是:
#!/bin/sh
#This is a comment
#This is my first shell script
echo "System Status Report"
date
echo "CPU Utilisation Report"
prstat -a > CPU.xls
示例输出为:
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
26652 root 22M 9648K sleep 1 0 94:34.26 0.2% gpp/1
26854 root 708M 697M sleep 3 0 36:23.19 0.1% logscan/1
25167 oracle 1254M 1225M sleep 1 0 14:07.01 0.0% oracle/10
NPROC USERNAME SIZE RSS MEMORY TIME CPU
41 root 1000M 834M 1.1% 143:47.47 0.4%
60 oracle 72G 70G 99% 65:07.13 0.1%
我想在文件中得到以下输出:
USERNAME CPU
root 0.2%
root 0.1%
oracle 0.0%
USERNAME MEMORY
root 1.1%
oracle 99%