Linux-AWK/C2/Built-in-Variables-in-awk/Tamil

From Script | Spoken-Tutorial
Jump to: navigation, search
Time
Narration
00:01 Awkல் built-in variableகள் மற்றும் awk script. குறித்த ஸ்போகன் டுடோரியலுக்கு நல்வரவு.
00:07 இந்த டுடோரியலில் நாம், Built-in variableகள் மற்றும்awk script பற்றி கற்கப்போகிறோம்.
00:14 இதை, சில உதாரணங்கள் மூலமாக நாம் செய்வோம்.
00:17 இந்த டுடோரியலை பதிவு செய்ய நான், Ubuntu Linux 16.04 Operating System மற்றும் gedit text editor 3.20.1ஐ பயன்படுத்துகிறேன்.
00:30 இந்த டுடோரியலில் பயன்படுத்தப்பட்டுள்ள fileகள், இந்த டுடோரியல் பக்கத்தில் உள்ள Code Files இணைப்பில் உள்ளது. அதை தரவிறக்கி பயன்படுத்திக்கொள்ளவும்.
00:40 இந்த டுடோரியலை பயிற்சி செய்ய, இந்த வலைத்தளத்தில் உள்ள முந்தையawk டுடோரியல்களை நீங்கள் படித்திருக்க வேண்டும்.
00:47 இல்லையெனில், இந்த வலைத்தளத்தில் உள்ள அதற்கான டுடோரியல்களை படிக்கவும்.
00:52 முதலில், awkல் உள்ள சில built-in variableகளைப் பார்ப்போம்.
00:57 Capital RS, ஒரு input fileலில் உள்ள record separatorஐ குறிப்பிடுகிறது. முன்னிருப்பாக, அது newline ஆகும்.
01:07 Capital FS, ஒரு input fileலில் உள்ள field separatorஐ குறிப்பிடுகிறது.
01:13 முன்னிருப்பாக, FSன் மதிப்பு, ஒரு whitespace ஆகும்.
01:18 Capital ORS, output record separatorஐ வரையறுக்கிறது. முன்னிருப்பாக, அது newline ஆகும்.
01:27 Capital OFS, output field separatorஐ வரையறுக்கிறது. முன்னிருப்பாக, அது whitespace ஆகும்.
01:36 இவை ஒவ்வொன்றின் பொருளையும் புரிந்துகொள்வோம்.
01:40 இப்போது, awkdemo fileஐ பார்ப்போம்.
01:44 இந்த awkdemo fileஐ , awk commandஉடன் நாம் process செய்யும் போது, இது நமது input file ஆகிறது.
01:51 ஒரு newline characterஇனால், எல்லா recordகளும் ஒன்றிலிருந்து ஒன்று பிரிக்கப்பட்டுள்ளன.
01:58 Record separator RS variable. க்கு, newline முன்னிருப்பான மதிப்பாகும். அதனால், வேறொன்றும் செய்யத்தேவையில்லை.
02:08 ஒரு pipe symbolஇனால், எல்லா fieldகளும் பிரிக்கப்பட்டுள்ளன என்பதை கவனிக்கவும். இதை awk க்கு எப்படி நாம் தெரியப்படுத்துவது? பார்ப்போம்.
02:18 முன்னிருப்பாக, spaceகள் அல்லது tabகளின் எந்த எண்ணிக்கையும் fieldகளை பிரிக்கின்றன.
02:24 நமது முந்தைய டுடோரியல்களில் கற்றது போல், hyphen capital Fதேர்வின் உதவியுடன் இதை நாம் reset செய்யலாம்.
02:33 அல்லது, FS variableஐ பயன்படுத்தி BEGIN section ல் நாம் இதை reset செய்யலாம்.
02:40 இதை ஒரு உதாரணத்தின் மூலம் நாம் செய்வோம். ரூபாய், 5000க்கு மேல் உதவித்த்தொகை பெறுகின்ற மாணவர்களின் பெயர்களை நான் கண்டுபிடிக்க வேண்டும் என்று வைத்துக்கொள்வோம்.
02:51 CTRL, ALT மற்றும்T keyகளை ஒன்றாக அழுத்தி, terminalஐ திறக்கவும்.
02:57 cd command.ஐ பயன்படுத்தி, நீங்கள் தரவிறக்கி, extract செய்த Code Fileகளை வைத்துள்ள folderக்கு செல்லவும்.
03:04 இங்கு காட்டப்பட்டுள்ளபடி, commandஐ டைப் செய்யவும்.
03:08 இங்கு, BEGIN பிரிவில், FSன் மதிப்புக்கு ஒரு pipe symbol.ஐ நாம் ஒதுக்கியுள்ளோம். இவ்வாறே நாம், RS variable.ஐ மாற்றலாம்.
03:19 Commandஐ செயல்படுத்த, Enterஐ அழுத்தவும்.
03:23 ரூபாய் 5000க்கு மேல் உதவித்தொகை பெறுகின்ற மாணவர்களின் பட்டியலை output காட்டுகிறது.
03:30 இங்கு, name field மற்றும் stipend field, ஒரு காலி spaceஇனால் பிரிக்கப்பட்டுள்ளது.
03:36 மேலும், எல்லா recordகளும் ஒரு newline character.இனால் பிரிக்கப்பட்டுள்ளன.
03:42 Output field separator.ஆக, colon உம், output record separatorஆக double newline உம் இருக்கவேண்டும் என நாம் விரும்புகிறோம்.
03:52 இதை எப்படி செய்யலாம்? பார்ப்போம்.
03:55 முன்பு செயல்படுத்தப்பட்ட commandஐ பெற, terminalலில் up arrow keyஐ அழுத்தவும்.
04:01 இங்கு காட்டப்பட்டுள்ளபடி commandஐ மாற்றவும். பின், Enter.ஐ அழுத்தவும்.
04:08 நாம் விரும்பிய formatல் output கிடைக்கிறது.
04:12 இப்போது, நமது புதிய input file, sample.txt. என வைத்துக்கொள்வோம்.
04:18 இங்கு, field separator newline ஆகவும், record separator double newline.ஆகவும் இருப்பதை கவனிக்கவும்.
04:27 இந்த fileலில் இருந்து roll number மற்றும் பெயரை எப்படி நாம் extract செய்வது?
04:32 ஆம். நீங்கள் சரியாக ஊகித்துவிட்டீர்கள். FS மற்றும் RS variableகள் இரண்டையும் நாம் மாற்றவேண்டும்.
04:39 இந்த டுடோரியலை இடைநிறுத்தி, இதை ஒரு பயிற்சியாக செய்யவும்.
04:43 அடுத்து, மற்ற built-in variableகளைப் பார்ப்போம்.
04:47 Capital NR, awkவினால் process செய்யப்பட்ட Number of Recordsஐ காட்டுகிறது.
04:53 Capital NF, தற்போதைய recordல் உள்ள Number of Fields ஐ காட்டுகிறது.
04:59 இது குறித்த ஒரு உதாரணத்தை நாம் பார்ப்போம். Fileலில் உள்ள முடிவு பெறாத வரிகளை நாம் கண்டுபிடிக்க வேண்டும் என்று வைத்துக்கொள்வோம்.
05:07 இங்கு, முடிவு பெறாத வரி என்பது, சாதாரணமான 6 fieldகளை விட குறைவாக கொண்டது என்று பொருளாகும்.
05:13 Terminalக்கு திரும்பவும். Ctrl மற்றும்L keyகளை வைத்து, terminalஐ clear செய்கிறேன்.
05:20 கட்டப்பட்டுள்ளபடி, commandஐ டைப் செய்யவும்.
05:24 Fieldகள் pipe இனால் பிரிக்கப்பட்டுள்ளதால், BEGIN section.ல், FSன் மதிப்பை pipe குறியீட்டுக்கு set செய்யவும்.
05:33 அடுத்து, NF not equal to 6 என நாம் எழுதியுள்ளோம்.
05:37 இது, தற்போதைய வரியில் உள்ள fieldகளின் எண்ணிக்கை, 6க்கு சமமாக இல்லாமல் இருக்கிறதா என்று சரிபார்க்கிறது.
05:43 அது சரியெனில், $0இனால் குறிக்கப்பட்ட முழு வரியுடன், recordன் வரி எண், NRஐ , print section print செய்கிறது. Enterஐ அழுத்தவும்.
05:55 Outputல், record எண் 16 , முடிவு பெறாத record ஆகும் என்பதை நாம் காணலாம். அது, 6க்கு பதிலாக 5 fieldகளை மட்டுமே கொண்டிருக்கிறது.
06:05 மேலும் ஒரு உதாரணத்தை காண்போம். Fieldsகளின் எண்ணிக்கையை பொருட்படுத்தாமல், ஒவ்வொரு மாணவருக்கும், முதல் மற்றும் கடைசி field ஐ எவ்வாறு நாம் print செய்வது?
06:16 Terminalலில் காட்டப்பட்டுள்ளபடி commandஐ டைப் செய்யவும்.
06:21 இங்கு, FS variableஐ set செய்வதற்கு பதிலாக நாம், hyphen capital F தேர்வை பயன்படுத்தியுள்ளோம். Enterஐ அழுத்தவும்.
06:30 Fileலில் உள்ள ஒவ்வொரு recordக்குமான, முதல் மற்றும் கடைசி fieldகளை மட்டும் நாம் பெறுகிறோம்.
06:36 இப்போது, வேறொன்றை முயற்சிப்போம்.
06:39 demo1.txt, demo2.txt இரண்டு fileகளிலும், மாணவர்களின் recordகள் உள்ளன என்று வைத்துக்கொள்வோம்.
06:48 இந்த இரண்டு fileகள் ஒவ்வொன்றிலிருந்தும், முதல் 3 வரிகளை நாம் print செய்ய விரும்புகிறோம். NR variableஐ பயன்படுத்தி இதை நாம் செய்யலாம்.
06:57 இவை, இரண்டு fileகளிலும் உள்ள உள்ளுறையாகும்.
07:02 இப்போது, ஒவ்வொரு fileலில் இருந்தும், முதல் 3 வரிகளை காட்ட, terminal.லில் பின்வரும் commandஐ டைப் செய்யவும்.
07:11 Enterஐ அழுத்தவும்.
07:13 demo1.txt fileமுதல் 3 recordகளை மட்டும், output காட்டுகிறது.
07:20 இரண்டாவது fileக்கும் இதையே நாம் எப்படி print செய்வது?
07:24 அதற்கான தீர்வு, NRக்கு பதிலாக, FNRஐ பயன்படுத்தவேண்டும். FNR, தற்போதைய fileலில் உள்ள, current record number ஆகும்.
07:34 ஒவ்வொரு முறை ஒரு புதிய record படிக்கப்படும் போது, FNR அதிகப்படுத்தப்படுகிறது.
07:39 ஒவ்வொரு முறை, ஒரு புதிய input file தொடங்கும் போது, அது பூஜ்யத்திற்குreinitialize செய்யப்படுகிறது.
07:46 ஆனால், programன் செயல்படுத்துதலின் தொடக்கத்திலிருந்து, awk process செய்த recordகளின் எண்ணிக்கையேNR ஆகும்.
07:55 ஒரு புதிய fileக்கு அது பூஜ்யத்திற்கு reset ஆகாது.
07:59 Terminalக்கு திரும்பவும். முன்பு செயல்படுத்தப்பட்ட commandஐ பெற, up arrow keyஐ அழுத்தவும்.
08:06 முந்தைய commandஐ பின்வருமாறு மாற்றவும். NR.க்கு பதிலாக, FNR என டைப் செய்யவும்.
08:14 Print section,ல், NR,க்கு அடுத்து, டைப் செய்க: FNR. Enter.ஐ அழுத்தவும்.
08:21 இப்போது, சரியான outputஐ நாம் பெறுகிறோம். புதிய fileக்கு , FNR பூஜ்யத்திற்கு set செய்யப்படுகிறது, ஆனால் NR, அதிகரித்துக்கொண்டே இருக்கிறது.
08:31 இப்போது, மற்ற சில built-in variableகளைப் பார்ப்போம். Read செய்யப்பட்டு கொண்டிருக்கின்ற fileன் பெயரை, FILENAME variable கொடுக்கிறது.
08:40 ARGC, command lineலில் கொடுக்கப்பட்டுள்ள argumentகளின் எண்ணிக்கையை குறிப்பிடுகிறது.
08:46 ARGV, command line argumentகளை சேமிக்கின்ற ஒரு array ஐ குறித்துக்காட்டுகிறது.
08:52 ENVIRON, shell environment variableகளின் array ஐயும், மற்றும் அதற்குரிய மதிப்புகளையும் குறித்துக்காட்டுகிறது.
09:00 ARGV மற்றும்ENVIRON, awkல் arrayஐ பயன்படுத்துவதனால், அடுத்தடுத்த டுடோரியல்களில், நாம் அவற்றை பார்ப்போம்.
09:09 இப்போது, variable FILENAMEஐ பார்ப்போம். தற்போது process செய்யப்பட்டு கொண்டிருக்கின்ற fileன் பெயரை எப்படி நாம் print செய்வது?
09:18 Terminalக்கு மாறி, காட்டப்பட்டுள்ளபடி commandஐ டைப் செய்யவும்.
09:23 இங்கு நாம், space ஐ ஒரு string concatenation operator.ஆக பயன்படுத்தியுள்ளோம். Commandஐ செயல்படுத்த Enterஐ அழுத்தவும்.
09:32 Output, input filename ஐ பல முறைகள் காட்டுகிறது.
09:37 இது ஏனெனில், awkdemo.txt fileலில் உள்ள ஒவ்வொரு rowக்கும், இந்த command, fileன் பெயரை ஒரு முறை print செய்கிறது. இதை ஒரு முறை மட்டும் எப்படி print செய்வது?
09:48 Terminalஐ clear செய்யவும். முன்பு செயல்படுத்தப்பட்ட commandஐ பெற, up arrow keyஐ அழுத்தவும்.
09:55 இங்கு காட்டப்பட்டுள்ளபடி, முந்தைய commandஐ மாற்றவும். Enterஐ அழுத்தவும்.
10:02 இப்போது நாம், fileன் பெயரை ஒரு முறை மட்டுமே பெறுகிறோம்.
10:06 Awkல், வேறு சில built-in variableகள் உள்ளன. அவற்றை பற்றி மேலும் தெரிந்துகொள்ள, இணையத்தை பார்க்கவும்.
10:14 தேர்ச்சி பெற்ற மற்றும் ரூபாய் 8000க்கும் அதிகமாக உதவித்தொகையை பெறுகின்ற மாணவர்களை நமக்கு கண்டுபிடிக்க வேண்டும் என்று வைத்துக்கொள்வோம்.
10:22 Output field separatorஆக comma வை பயன்படுத்தி, “The data is shown for file”என்பதையும் fileன் பெயரையும் footer sectionல் print செய்யவும். இதை எப்படி செய்வது?
10:36 Terminalலில் பின்வரும் commandஐ டைப் செய்யவும். Enterஐ அழுத்தவும்.
10:43 ஒரு மாணவர் மட்டுமே, தேர்ச்சி பெற்று மற்றும் ரூபாய் 8000க்கும் மேல் உதவித்தொகை பெறுகிறார் என்பதை நாம் காணலாம். மற்றும் recordன் எண் 2 ஆகும்.
10:53 நாம் விரும்பியபடி, footerல் fileன் பெயரையும் நாம் காணலாம்.
10:58 நாம் awkஐ , மேலும் சிக்கலான வேலைகளுக்கு பயன்படுத்தலாம்.
11:03 அச்சூழ்நிலையில், terminalலில் ஒவ்வொரு முறையும் commandகளை எழுதுவது மேலும் கடினமாகிறது.
11:09 அதற்கு பதிலாக, நாம் awk programஐ ஒரு தனி fileலில் எழுதலாம்.
11:14 செயல்படுத்த, அந்த file , dot awk நீட்டிப்பை கொண்டிருக்கவேண்டும்.
11:19 செயல்படுத்தும் போது, awk command.உடன், இந்த awk program fileன் பெயரை நாம் குறிப்பிடலாம்.
11:26 அதைச் செய்ய நாம், hyphen small f தேர்வை பயன்படுத்தவேண்டும். ஒரு உதாரணத்தை பார்ப்போம்.
11:35 நான் ஏற்கனவே ஒரு awk programஐ எழுதி, அதை prog1 dot awk. என சேமித்துள்ளேன்.
11:42 இந்த code, Code Files இணைப்பிலும் உள்ளது.
11:46 Terminalக்கு மாறவும். இறுதியாக செயல்படுத்தப்பட்ட command ன் single quoteகளினுள் நாம் என்ன எழுதியுள்ளோம் என்பதை பார்க்கவும்.
11:55 prog1.awk fileன் உள்ளுறை அதுவே ஆகும்.
12:00 Awk fileலில், நாம் single quotes.களினுள் எழுதவில்லை என்பது மட்டுமே வேறுபாடு ஆகும்.
12:07 Fileஐ செயல்படுத்த, terminalலில் பின்வருவனவற்றை டைப் செய்யவும்- awk space hyphen small f space prog1.awk space awkdemo.txt . பின், Enterஐ அழுத்தவும்.
12:24 நாம் முன்பு பார்த்த அதே outputஐ பெறுகிறோம்.
12:29 இவ்வழியில், நீங்கள் awk programகளை எழுதி, அதை பல முறைகள் பயன்படுத்தலாம்.
12:35 இத்துடன் நாம் இந்த டுடோரியலின் முடிவுக்கு வந்துவிட்டோம். சுருங்கச் சொல்ல,
12:40 இந்த டுடோரியல் நாம் கற்றது: பல்வேறு உதாரணங்களை பயன்படுத்தி, Built-in variableகள் மற்றும் awk script
12:48 பயிற்சியாக- awkdemo.txt fileலில், ஐந்தாவது வரியின் கடைசி ஐ print செய்வதற்கான ஒரு awk scriptஐ எழுதவும்.
12:58 Terminalலில், /etc/passwd ஐ திறக்கவும்.
13:05 அங்குள்ள எல்லா separatorகளையும் அடையாளம் காணவும்.
13:09 இப்போது, இருபதாவது வரியிலிருந்து fileஐ process செய்வதற்கான ஒரு script ஐ எழுதவும்.
13:15 அதுவும், ஆறுக்கும் அதிகமான fieldகளை கொண்ட வரிகளுக்கு மட்டும்.
13:20 அந்த குறிப்பிட்ட வரியில், line number, முழு வரி மற்றும் fieldகளின் எண்ணிக்கையை நீங்கள் print செய்யவேண்டும்.
13:28 பின்வரும் இணைப்பில் உள்ள காணொளி, Spoken Tutorial திட்டத்தை சுருங்கச் சொல்கிறது. அதை தரவிறக்கி காணவும்.
13:36 ஸ்போகன் டுடோரியல் திட்டக்குழு, ஸ்போகன் டுடோரியல்களை பயன்படுத்தி, செய்முறை வகுப்புகள் நடத்தி, சான்றிதழ்கள் தருகிறது. மேலும் விவரங்களுக்கு எங்களுக்கு எழுதவும்.
13:47 உங்கள் கேள்விகளை, இந்த மன்றத்தில் முன்வைக்கவும்.
13:51 ஸ்போகன் டுடோரியல் திட்டத்திற்கு பண ஆதரவு, இந்திய அரசாங்கத்தின், NMEICT, MHRD, மூலம் கிடைக்கிறது. மேலும் விவரங்களுக்கு, கீழ்கண்ட இணைப்பை பார்க்கவும்.
14:03 இந்த டுடோரியலை தமிழாக்கம் செய்தது ஜெயஸ்ரீ, குரல் கொடுத்தது ரிஷிதா. கலந்துகொண்டமைக்கு நன்றி.

Contributors and Content Editors

Jayashree