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 ฯลฯ ในระยะที่สองและให้ข้อผิดพลาดกับคำสั่งพิมพ์ฉันกำลังมองหารุ่น grep / sed / cut สิ่งที่ดูเหมือนว่าจะทำงานคือ:
iostat | grep "hdisk1 " | sed -e's/ */ /g' | cut -d" " -f 5
[] s เป็น "0 หรือมากกว่า" เมื่อฉันคิดว่าพวกเขาหมายถึง "เพียงคนเดียว" การลบเครื่องหมายวงเล็บออกทำให้ทำงานได้ สามคำตอบที่ดีมากอย่างรวดเร็วทำให้ยากที่จะเลือก "คำตอบ"