Bash调用awk写入文本文件

Bash调用awk写入文本文件,bash,Bash,考虑iostat的输出 如何在忽略sda字符串的情况下将以sda开头的行的值读入bash数组?尝试以下操作: x=($(iostat|grep -Po '^sda\s*\K.*')) 用您的示例进行测试: kent$ cat f Linux 2.6.31-20-generic-pae (ubuntu-9-10) 04/08/2010 _i686_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle

考虑iostat的输出

如何在忽略sda字符串的情况下将以sda开头的行的值读入bash数组?

尝试以下操作:

x=($(iostat|grep -Po '^sda\s*\K.*'))
用您的示例进行测试:

kent$  cat f
Linux 2.6.31-20-generic-pae (ubuntu-9-10)   04/08/2010  _i686_  (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.38    0.07    0.66    0.39    0.00   96.51

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               6.93       131.80        85.02    1347350     869177

kent$  x=($(cat f|grep -Po '^sda\s*\K.*'))   

kent$  echo ${#x}
5

kent$  echo ${x[3]}
85.02

kent$  echo ${x[@]}
6.93 131.80 85.02 1347350 869177
使用sed查找行并从中删除字符串。使用$。。。将其输出捕获到变量

$ sda=( $(iostat | sed -n '/^sda/ s/^sda// p') )
$ echo ${sda[0]}
6.93
$ echo ${sda[1]}
131.80

欢迎来到StackOverflow。请花些时间阅读。现在,我已经改进了你的问题,但是如果你想让你的问题得到认真对待,你可能需要在这些问题上花费更多的精力。你的主题行似乎与你在最后一行中陈述的问题没有任何关系。祝你好运
$ sda=( $(iostat | sed -n '/^sda/ s/^sda// p') )
$ echo ${sda[0]}
6.93
$ echo ${sda[1]}
131.80