ڪاوش: شيل اسڪرپٽ سکڻ وارا ايڪي ٽرمينل ڪمانڊ استعمال ڪندي
GNU / لينڪس قسم جو مفت آپريٽنگ سسٽم ۾ “awk” ڪمانڊ هڪ انتهائي طاقتور ڪمانڊ آهي ، جيڪو اسان کي ٻين ڪنٽرولن يا ڪمانڊ ڪمانڊ تان ڊيٽا پروسيسنگ ڪرڻ دوران گهڻي ڪنٽرول ڪرڻ ۾ مدد ڏيندو آهي. نالو AWK هن جي مصنفن جا نالا جي شروعات مان نڪتل آهن: الفرڊ Aھا ، پيٽر Wايِنبرگر ، ۽ برين Kيرغان.
هي حڪم متن واري پروسيسنگ جي لاءِ رسم الخط ٻولي فراهم ڪندو آهي جنهن سان اسان ڪري سگهون ٿا: متغيرات کي بيان ڪريو ، اسٽرنگس ۽ رياضياتي آپريٽر استعمال ڪريو ، فلو ڪنٽرول ۽ سائيڪل استعمال ڪريو ، ۽ فارموليڊ رپورٽون ٺاهي اصل ۾ ، Awk صرف هڪ نمونن جي پروسيسنگ ڪمان کان وڌيڪ آهي ، اها هڪ مڪمل لفظي تجزياتي ٻولي آهي.
”awk“ حڪم جو تعارف
AWK يو اين ايڪس پائپ لائنز جي ڪارڪردگي کي وڌائڻ سان ڊيٽا کي منظم ڪرڻ (هٿ ڪرڻ / ڪ extractڻ) کي منظم ڪرڻ جي پهرين مشهور ڪنسول افاديت مان هڪ هئي. هن افاديت مان مهيا ڪيل ٻولي هن وقت تقريباً تمام جديد يونيڪس قسم واري آپريٽنگ سسٽم ۾ هڪ معيار آهي ، ايتري قدر جو اهو بنيادي UNIX وضاحت جو حصو آهي ، تنهن ڪري اهو عام طور تي اڪثر انهن ۾ پهريان کان ئي ڊيفالٽ طور تي انسٽال ٿيل آهي.
هن جي عام عام لئه بندي آهي: اچڪ 'پروگرام' فائلون ۽ ڪٿي 'پروگرام' ٿي سگهي ٿو: نمونو {عمل} نمونو {عمل}. حڪم هڪ وقت ۾ فائل انپٽ کي هڪ لائن پڙهائي ٿو. هر قطار ترتيب سان هر نمونو جي مقابلي ۾ آهي. هر هڪ نموني لاءِ جيڪو قطار سان ملي ٿو ، ساڳئي ئي عمل ڪيو ويندو آهي.
هڪ سادي مثال وانگر:
awk -F: '$1=="root" {print}' /etc/passwd
اهو پهريون ميدان لاءِ پڇي ٿو جيڪڏهن اهو / etc / passwd ۾ هر لڪير جو روٽ آهي ۽ ان کي پرنٽ ڪندي ":" سان -F: فيلڊ ڌارر طور.
عملي مثال
وڌيڪ استعمال ٿيل ڪمانڊ لسٽ
نظام ٽرمينل جي تاريخ تي ٻڌل هڪ فهرست ڏسو جيڪا اڪثر گهٽين کان گهٽ استعمال ٿيل ترتيب ڏنل آهي.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
مثال طور
گراف (ٽيبل) هر ميزبان جي رابطن سان
ASCII متن تي ٻڌل گراف ٺاهيو جيڪو هر IP پتي ڏانهن ميزبان کان گهڻن رابطن جي ڏيکاري ٿو.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
مثال طور
فهرستن جي حساب سان ڊائريڪٽريءَ جي لسٽ
اسڪرين تي پرنٽ ڪريو موجوده رستي جي ڊاريڪٽري جي نن theن نن fromن کان نن toن وڏين تائين نن showingن ليبلن کي انهن جي سائز سان لاڳاپيل اکر اکر استعمال ڪندي: ج ، م ، ۽ ڪ.
du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'
مثال طور
نيٽ ورڪ انٽرفيس مان ٽرئفڪ ڏيکاريو
مخصوص نيٽ ورڪ انٽرفيس لاءِ ڪلو بائيٽ (ڪلو) ۾ آن لائن ۽ آئوٽبائونڊ ڊيٽا استعمال ڪريو ڏسو.
while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done
مثال طور
هڪ فبونڪي نمبر سيريز حاصل ڪريو
ايڪس بيبي نمبرن جي هڪ فهرست ٺاهيو فبنيڪي نموني جي ڏنل 2 بنيادي نمبرن جي تعمير جو.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
مثال طور
شڪل جي لحاظ کان فائل جي جوڙجڪ جي گرافڪ لسٽ
گرافڪس (بار) ۽ عددي نمائندگي سان ان جي سائز جو هڪ سيڪڙو انهي سان گڏ آپريٽنگ سسٽم جي روٽ ۾ سڀني فولڊر جي فهرست حاصل ڪريو.
t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'
مثال طور
ھڪڙي ڊاريڪٽري ۾ فائل جي قسمن جو خلاصو لسٽ ڪريو
ڊاريڪٽري ۾ موجود فائلن جي قسمن جي فهرست ڏيکاريو فائلن جو تعداد ان سان ملندڙ آهي.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
مثال طور
ايڪي ڪمانڊ استعمال ڪندي ڪمانڊ لائينز جا مثال ، آئون اميد ٿو ڪريان ته توهان کي اهو تمام مفيد ملندو. ۽ اهي ڪم سڌي طرح ڪنسول يا سڌي طرح سان استعمال ڪرڻ جي لاءِ استعمال ڪن ٿا هڪ اسڪرپٽ ۾ (داخل ٿيل ڪم)
شيل اسڪرپٽ تي ايندڙ پوسٽ ۾ اسين ٻين حڪمن جي جاچ ڪنداسين.
جيڪڏهن توهان “گرپ” ڪمان بابت هن لنڪ تي وڌيڪ toاڻڻ سکو ٿا.ڊيبين وڪي”۽ جيڪڏهن توهان اسان جي بلاگ ۾ شيل اسڪرپٽ بابت وڌيڪ toاڻڻ چاهيندا، توهان موضوع تي اسان جي ٻين اشاعتن تي هڪ نظر وجهو ، هتي ڪلڪ ڪري سگهو ٿا: FromLinux ۾ اسڪرپٽ
هڪ رايو ، توهان ڇڏيو
مون صرف پهرين مثال سمجهي ، ٻيو ڪجهه به ناهي 🙁