linux - 如何遍历awk中的列?

标签 linux bash awk

当我这样做

/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -A -I '/run/*' -I '/tmp/*' | cut -f2 -d"|" | \
awk '{
  for (i = 1; i <= NF; i++){
    print $i
  }
}'

我明白了

/dev=0MB;6356;7151;0;7946
/dev/shm=74MB;6367;7163;0;7959
/sys/fs/cgroup=0MB;6367;7163;0;7959
/=12975MB;12792;14391;0;15990
/home=139507MB;190780;214627;0;238475
/mnt/dat0=2316MB;35376;39798;0;44221

问题

如何遍历 $i 中由 ; 分隔的每个元素?

最佳答案

使用函数 split() 将正则表达式设置为 [;=] 将每个字段放入数组 a

/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -A -I '/run/*' -I '/tmp/*' | awk -F'|' '{
  split($2, a, "[;=]");
  for(i in a){
      print a[i]
  }
}' 

请注意,cut 命令可以通过使用第二个字段替换为 awk -F'|'

关于linux - 如何遍历awk中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394137/

相关文章:

linux - tslib 不创 build 备

linux - 如何保留 stderr 输出并将其重定向到文件

bash - 为什么带有后缀的基本名称与 find 一起使用时在子 shell 中不起作用?

xml - 使用 xmlstarlet 或 xmllint 获取属性值

linux - 没有任何循环程序的 sed 增量计数器

python - DSTAT 作为 Python API ?

linux - OpenWebmail 在收件箱中显示不正确的日期

Linux 时区警告

linux - 递归地为每个文件创建单独的 MD5 文件

csv - AWK:为 Mechanical Turk 输出带有引号和删除段的 CSV