sed
在AIX上没有按照我的想法去做。我正在尝试在IOSTAT的输出中用单个空格替换多个空格:
# iostat
System configuration: lcpu=4 drives=8 paths=2 vdisks=0
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.2 31.8 9.7 4.9 82.9 2.5
Disks: % tm_act Kbps tps Kb_read Kb_wrtn
hdisk9 0.2 54.2 1.1 1073456960 436765896
hdisk7 0.2 54.1 1.1 1070600212 435678280
hdisk8 0.0 0.0 0.0 0 0
hdisk6 0.0 0.0 0.0 0 0
hdisk1 0.1 6.3 0.5 63344916 112429672
hdisk0 0.1 5.0 0.2 40967838 98574444
cd0 0.0 0.0 0.0 0 0
hdiskpower1 0.2 108.3 2.3 2144057172 872444176
# iostat | grep hdisk1
hdisk1 0.1 6.3 0.5 63345700 112431123
#iostat|grep "hdisk1"|sed -e"s/[ ]*/ /g"
h d i s k 1 0 . 1 6 . 3 0 . 5 6 3 3 4 5 8 8 0 1 1 2 4 3 2 3 5 4
sed应该为整个组(/ g)搜索并用单个空格(/ /)替换多个空格(/ [] * /),但不仅是这样,它还分隔了每个字符。
我究竟做错了什么?我知道它一定很简单... AIX 5300-06
编辑:我有一台计算机,有10多个硬盘。我将此作为另一个程序的参数进行监视。
我遇到的问题是“ awk'{print $ 5}'不起作用,因为我在第二阶段使用了$ 1等,并给出了Print命令错误。我正在寻找grep / sed / cut版本。似乎有效的是:
iostat | grep "hdisk1 " | sed -e's/ */ /g' | cut -d" " -f 5
当我认为[]的意思是“仅一个”时,它们是“ 0或更多”。卸下支架即可正常工作。三个非常好的答案确实很快使选择“答案”变得困难。