AWK கட்டளைகள் மற்றும் ஸ்கிரிப்டுகள் எழுதுவது எப்படி

கட்டளைகள், தொடரியல் மற்றும் எடுத்துக்காட்டுகள்

Awk கட்டளையானது உரை கோப்புகளை செயலாக்க அல்லது பகுப்பாய்வு செய்வதற்கான ஒரு சக்தி வாய்ந்த வழிமுறையாகும் - குறிப்பாக, கோடுகள் (வரிசைகள்) மற்றும் நெடுவரிசைகளால் ஏற்பாடு செய்யப்படும் தரவு கோப்புகள்.

எளிய awk கட்டளைகள் கட்டளை வரியிலிருந்து இயக்கப்படும். மிகவும் சிக்கலான பணிகளை ஒரு கோப்புக்கு awk நிரல்களாக (awk scripts என்று அழைக்கப்படுவது) எழுதப்பட வேண்டும்.

ஒரு awk கட்டளையின் அடிப்படை வடிவமைப்பு இதைப் போன்றது:

awk 'முறை {action}' input-file> output-file

இதன் பொருள்: உள்ளீட்டு கோப்பின் ஒவ்வொரு வரியும் எடுத்துக்கொள்ளுங்கள்; வரி இருந்தால், செயல்முறை வரிக்கு பொருந்தும், அதன் விளைவாக வரி வெளியீடு-கோப்பில் எழுதவும். முறை தவிர்க்கப்பட்டால், நடவடிக்கை அனைத்து வரியிலும் பயன்படுத்தப்படுகிறது. உதாரணத்திற்கு:

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

இந்த அறிக்கை ஒவ்வொரு வரியின் 5 வது நெடுவரிசையின் உறுப்பு எடுக்கும் மற்றும் வெளியீடு கோப்பு "output.txt" இல் ஒரு வரியை எழுதுகிறது. மாறி '$ 4' இரண்டாவது நிரலை குறிக்கிறது. இதேபோல் முதல், இரண்டாவது மற்றும் மூன்றாம் நெடுவரிசைகளை $ 1, $ 2, $ 3, முதலியன அணுகலாம். இயல்புநிலை பத்திகள் இடைவெளிகளால் அல்லது தாவல்களால் (வெற்று இடம் என்று அழைக்கப்படும்) பிரிக்கப்பட்டதாக கருதப்படுகிறது. எனவே, உள்ளீடு கோப்பில் "table1.txt" இந்த வரிகளைக் கொண்டுள்ளது:

லேடி காகா, தலைப்பு 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

நெடுவரிசைகள் ஒரு கமாவால் பிரிக்கப்பட வேண்டுமெனில், ஒவ்வொரு வரியின் பத்தியில் 3 இலும் இது தேர்ந்தெடுக்கப்படும். எனவே வெளியீடு, இந்த வழக்கில், இருக்கும்:

தலைப்பு 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" பத்தியில் 7.

நீங்கள் வழக்கமான வெளிப்பாடுகளை நிலைமையாக பயன்படுத்தலாம். உதாரணத்திற்கு:

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; அச்சு தொகை; } '

இது ஒவ்வொரு வரிசையின் அனைத்து உறுப்புகளின் தொகையை கணக்கிடுகிறது மற்றும் அச்சிடுகிறது.

ஆடு அறிக்கைகள் அடிக்கடி கட்டளைகளுடன் கட்டப்பட்டுள்ளன .