AWK ఆదేశాలు మరియు స్క్రిప్ట్లను ఎలా వ్రాయాలి

ఆదేశాలు, వాక్యనిర్మాణం, మరియు ఉదాహరణలు

Awk ఆదేశం టెక్స్ట్ ఫైల్స్ ప్రాసెస్ లేదా విశ్లేషించడం కోసం ఒక శక్తివంతమైన పద్ధతి, ప్రత్యేకించి, పంక్తులు (వరుసలు) మరియు కాలమ్లచే నిర్వహించబడే డేటా ఫైళ్లు.

సాధారణ awk ఆదేశాలను కమాండ్ లైన్ నుండి రన్ చేయవచ్చు. మరింత సంక్లిష్ట పనులు ఒక ఫైల్ కు awk కార్యక్రమాలు (అని పిలవబడే awk స్క్రిప్ట్స్) గా వ్రాయాలి.

ఒక awk కమాండ్ యొక్క ప్రాథమిక ఫార్మాట్ ఇలా కనిపిస్తుంది:

awk 'నమూనా {action}' input-file> అవుట్పుట్-ఫైల్

దీని అర్థం: ఇన్పుట్ ఫైల్ యొక్క ప్రతి పంక్తిని తీసుకోండి; లైన్ కలిగి ఉంటే నమూనాను చర్యకు వర్తించు మరియు అవుట్పుట్-ఫైల్కు ఫలిత పంక్తిని రాయండి. నమూనా విస్మరించబడితే, చర్య అన్ని లైన్లకు వర్తించబడుతుంది. ఉదాహరణకి:

awk '{print $ 5}' table1.txt> output1.txt

ఈ వాక్యము ప్రతి లైన్ యొక్క 5 వ నిలువు వరుస యొక్క మూలకాన్ని తీసుకుంటుంది మరియు అవుట్పుట్ ఫైల్ "output.txt" లో ఒక వాక్యంగా వ్రాస్తుంది. వేరియబుల్ '$ 4' రెండవ నిలువు వరుసను సూచిస్తుంది. అదే విధంగా మీరు $ 1, $ 2, $ 3, మొదలైన మొదటి, రెండవ మరియు మూడవ కాలమ్ను యాక్సెస్ చేయవచ్చు. అప్రమేయ స్తంభాలు ఖాళీలు లేదా ట్యాబ్లు (ఈ విధంగా వైట్ స్పేస్ అని పిలువబడతాయి) ద్వారా వేరు చేయబడుతుందని ఊహించబడింది. కాబట్టి, ఇన్పుట్ ఫైల్ "table1.txt" ఈ వరుసలను కలిగి ఉంటే:

1, జస్టిన్ టింబర్లేక్, టైటిల్ 545, ధర $ 7.30 2, టేలర్ స్విఫ్ట్, టైటిల్ 723, ధర $ 7.90 3, మిక్ జాగర్, శీర్షిక 610, ధర $ 7.90 4, లేడీ గాగా, టైటిల్ 118, ధర $ 7.30 5, జానీ క్యాష్, శీర్షిక 482, ధర $ 6.50 6, ఎల్విస్ ప్రెస్లీ, టైటిల్ 335, ధర $ 7.30 7, జాన్ లెన్నాన్, టైటిల్ 271, ధర $ 7.90 8, మైఖేల్ జాక్సన్, శీర్షిక 373, ధర $ 5.50

అప్పుడు ఆదేశం అవుట్పుట్ ఫైల్ "output1.txt" కు క్రింది పంక్తులను వ్రాస్తుంది:

545, 723, 610, 118, 482, 335, 271, 373,

కాలమ్ విభజించడానికి ఖాళీలు లేదా ట్యాబ్ల కంటే ఇతర కామా వంటివి ఉంటే, మీరు ఈ క్రింది విధముగా అరుదైన ప్రకటనలో పేర్కొనవచ్చు:

awk -F, '{print $ 3}' table1.txt> output1.txt

నిలువు వరుసలు కామాతో వేరు చేయబడి ఉంటే, ప్రతి పంక్తిలోని కాలమ్ నుండి ఇది ఎలిమెంట్ను ఎంచుకోవచ్చు. అందువల్ల అవుట్పుట్, ఈ సందర్భంలో, ఉంటుంది:

శీర్షిక 545 శీర్షిక 723 శీర్షిక 610 శీర్షిక 118 శీర్షిక 482 శీర్షిక 335 శీర్షిక 271 శీర్షిక 373

కర్లీ బ్రాకెట్స్ ('{', '}') లోని ప్రకటనల జాబితాను బ్లాక్ అని పిలుస్తారు. మీరు ఒక బ్లాక్ ముందు నిబంధన వ్యక్తీకరణను ఉంచినట్లయితే, బ్లాక్ లోపల ఉన్న ప్రకటన పరిస్థితి నిజమైతే అమలు అవుతుంది.

awk '$ 7 == "\ $ 7.30" {print $ 3}' table1.txt

ఈ సందర్భంలో, ఈ పరిస్థితి $ 7 == "\ $ $ 7.30", అంటే నిలువు 7 వద్ద ఉన్న మూలకం $ 7.30 కు సమానంగా ఉంటుంది. $ 7 ను వేరియబుల్గా అన్వయించడం ద్వారా వ్యవస్థను నివారించడానికి బదులుగా డాలర్ సంకేతం ముందు ఉన్న బాక్ స్లాష్ ఉపయోగించబడుతుంది మరియు బదులుగా డాలర్ సంకేతం వాచ్యంగా తీసుకోబడుతుంది.

కాబట్టి ఈ awk ప్రకటన మూలకం బయటకు ప్రింట్లు ప్రతి లైన్ 3 వ కాలమ్ వద్ద కాలమ్ 7 వద్ద ఒక "$ 7.30" ఉంది.

మీరు రెగ్యులర్ ఎక్స్ప్రెషన్లను షరతుగా ఉపయోగించవచ్చు. ఉదాహరణకి:

awk '/ 30 / {print $ 3}' table1.txt

రెండు శ్లాష్లు ('/') మధ్య స్ట్రింగ్ అనేది సాధారణ వ్యక్తీకరణ. ఈ సందర్భంలో, అది కేవలం స్ట్రింగ్ "30." ఒక లైన్ స్ట్రింగ్ "30" ను కలిగి ఉన్నట్లయితే, ఆ వ్యవస్థ ఆ లైన్ యొక్క 3 వ నిలువరుసలో మూలకాన్ని ముద్రిస్తుంది. ఎగువ ఉదాహరణలో అవుట్పుట్ ఉంటుంది:

టింబెర్లేక్, గాగా, ప్రేస్లీ,

టేబుల్ ఎలిమెంట్స్ సంఖ్యలు ఉంటే, ఈ ఉదాహరణలో వాటిని గణనలను అమలు చేయవచ్చు:

awk '{print ($ 2 * $ 3) + $ 7}'

ప్రస్తుత అడ్డు వరుస ($ 1, $ 2, మొదలైనవి) యొక్క ప్రాప్తిని కలిగి ఉన్న వేరియబుల్స్ కాకుండా వేరియబుల్ $ 0 అనేది పూర్తి వరుస (పంక్తి) మరియు ఫీల్డ్ల సంఖ్యను కలిగి ఉన్న వేరియబుల్ NF ను సూచిస్తుంది.

మీరు ఈ ఉదాహరణలో కొత్త వేరియబుల్స్ను కూడా నిర్వచించవచ్చు:

awk '{sum = 0; కోసం (col = 1; col <= NF; col ++) మొత్తం + = $ col; ముద్రణ మొత్తం } '

ఇది ప్రతి అడ్డు వరుసలోని అన్ని అంశాల మొత్తాన్ని గణిస్తుంది మరియు ముద్రిస్తుంది.

మందకొడిగా ప్రకటనలు తరచుగా ఆదేశాలతో కలుపుతారు.