sed
unter AIX tut nicht was ich denke es sollte. Ich versuche, mehrere Leerzeichen durch ein einzelnes Leerzeichen in der Ausgabe von IOSTAT zu ersetzen:
# 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 sollte nach mehreren Leerzeichen (/ [] * /) suchen und diese durch ein einzelnes Leerzeichen (/ /) für die gesamte Gruppe (/ g) ersetzen.
Was mache ich falsch? Ich weiß, dass es etwas Einfaches sein muss ... AIX 5300-06
Bearbeiten: Ich habe einen anderen Computer mit mehr als 10 Festplatten. Ich verwende dies als Parameter für ein anderes Programm zu Überwachungszwecken.
Das Problem, auf das ich gestoßen bin, war, dass "awk '{print $ 5}' nicht funktioniert hat, weil ich $ 1 usw. in der Sekundärstufe verwende und Fehler mit dem Befehl Drucken ausgegeben habe. Ich habe nach einer grep / sed / cut-Version gesucht Was zu funktionieren scheint, ist:
iostat | grep "hdisk1 " | sed -e's/ */ /g' | cut -d" " -f 5
Die [] s waren "0 oder mehr", als ich dachte, dass sie "nur eine" bedeuten. Das Entfernen der Klammern hat funktioniert. Drei sehr gute Antworten machen es sehr schnell schwer, die "Antwort" zu wählen.