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 '{$ $ 5}' काम नहीं कर रहा था क्योंकि मैं द्वितीय चरण में $ 1 आदि का उपयोग कर रहा हूं और प्रिंट कमांड के साथ त्रुटियां दीं। मैं एक grep / sed / cut संस्करण की तलाश में था। क्या काम करने लगता है:
iostat | grep "hdisk1 " | sed -e's/ */ /g' | cut -d" " -f 5
जब मैंने सोचा कि वे "सिर्फ एक" का मतलब "0 या अधिक" थे। कोष्ठक हटाने से यह काम कर गया। तीन बहुत अच्छे जवाब वास्तव में जल्दी से "उत्तर" चुनने के लिए कठिन बनाते हैं।