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

From Script | Spoken-Tutorial
Revision as of 08:56, 12 July 2019 by Bharat636 (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Time
Narration
00:01 awk built-in variables અને awk script પરના સ્પોકન ટ્યુટોરીયલમાં સ્વાગત છે.
00:07 આ ટ્યુટોરીયલમાં આપણે આપેલ વિશે શીખીશું Built-in variables , awk script
00:14 આપણે આ અમુક ઉદાહરણો મારફતે કરીશું.
00:17 આ ટ્યુટોરીયલને રેકોર્ડ કરવા માટે, હું વાપરી રહ્યો છું Ubuntu Linux 16.04 Operating System અને gedit text editor 3.20.1
00:30 આ ટ્યુટોરીયલમાં વાપરવામાં આવેલ ફાઈલ આ ટ્યુટોરીયલ પુષ્ઠ પરના Code Files લિંકમાં ઉપલબ્ધ છે.

કૃપા કરી તેને ડાઉનલોડ કરીને એક્સટ્રેક્ટ કરો.

00:40 આ ટ્યુટોરીયલના અભ્યાસ માટે, તમને આ વેબસાઈટ પર આવેલ પાછલા awk tutorials મારફતે જવું જોઈએ.
00:47 જો નથી, તો અમારી વેબસાઈટ પરના સબંધિત ટ્યુટોરીયલો મારફતે જાવ.
00:52 પહેલા, ચાલો awk માં અમુક built-in variables જોઈએ.
00:57 કેપિટલ RSinput ફાઈલમાં record separator નિર્દિષ્ટ કરે છે. મૂળભૂત રીતે, તે newline છે.
01:07 કેપિટલ FSinput ફાઈલમાં field separator નિર્દિષ્ટ કરે છે.
01:13 મૂળભૂત રીતે, FS ની વેલ્યુ એક whitespace છે.
01:18 કેપિટલ ORSoutput record separator વ્યાખ્યાયિત કરે છે.

મૂળભૂત રીતે, તે newline છે.

01:27 કેપિટલ OFSoutput field separator વ્યાખ્યાયિત કરે છે.

મૂળભૂત રીતે, તે whitespace છે.

01:36 ચાલો આ દરેકનો અર્થ સમજીએ.
01:40 ચાલો હવે awkdemo ફાઈલ પર નજર ફેરવીએ.
01:44 જ્યારે આપણે આ awkdemo ફાઈલને awk કમાન્ડ સાથે પ્રોસેસ કરીએ છીએ ત્યારે, આ આપણી input ફાઈલ બને છે.
01:51 અવલોકન કરો, તમામ રેકોર્ડ્સ એક newline character દ્વારા એકબીજાથી જુદા પડ્યા છે.
01:58 newlinerecord separator RS variable માટે મૂળભૂત વેલ્યુ છે.

તેથી, બીજું કંઈપણ કરવાની જરૂર નથી.

02:08 નોંધ લો, તમામ ફિલ્ડ્સ pipe symbol દ્વારા જુદા પડ્યા છે.

આપણે awk ને તે વિશે કેવી રીતે જણાવી શકીએ?

ચાલો જોઈએ.

02:18 મૂળભૂત રીતે, spaces અથવા tabs ની કોઈપણ સંખ્યા ફિલ્ડ્સને જુદું કરે છે.
02:24 આપણે આને hyphen capital F વિકલ્પની મદદથી રીસેટ કરી શકીએ છીએ જેવું કે આપણા પહેલાના ટ્યુટોરીયલોમાં શીખ્યું છે.
02:33 નહિ તો, આપણે FS variable ના ઉપયોગ સાથે આ BEGIN section માં રીસેટ કરી શકીએ છીએ.
02:40 ચાલો આ ઉદાહરણ મારફતે કરીએ.

ધારો કે, મને એ વિદ્યાર્થીઓનું નામ શોધવું છે જેને શિષ્યવૃત્તિકા રૂ.5000 થી વધુ મળે છે.

02:51 CTRL, ALT અને T કી દાબીને terminal ખોલો.
02:57 cd command નો ઉપયોગ કરીને એ ફોલ્ડરમાં જાવ જ્યાં તમે Code Files ડાઉનલોડ કરી છે અને એક્સટ્રેકટ કરી છે.
03:04 અહીં દર્શાવ્યા પ્રમાણે કોડ ટાઈપ કરો.
03:08 અહીં BEGIN સેક્શનમાં, આપણે FS ની વેલ્યુ એક pipe symbol તરીકે એસાઇન કરી છે.

એજ પ્રમાણે, આપણે RS variable મોડીફાય કરી શકીએ છીએ.

03:19 કમાન્ડ એક્ઝિક્યુટ કરવા માટે Enter દબાવો.
03:23 આઉટપુટ વિદ્યાર્થીઓની સૂચિ દર્શાવે છે જેમને શિષ્યવૃત્તિકા તરીકે રૂ.5000 કરતા વધુ મળે છે.
03:30 અહીં name ફિલ્ડ અને stipend ફિલ્ડ એક ખાલી space દ્વારા જુદું થાય છે.
03:36 સાથે જ, તમામ રેકોર્ડ્સ એક newline character દ્વારા જુદા પડે છે.
03:42 ધારો કે આપણને colon output field separator તરીકે જોઈએ છે.

અને બમણી newline output record separator તરીકે.

03:52 આપણે આ કેવી રીતે કરી શકીશું? ચાલો જોઈએ.
03:55 terminal માં, પાછલા એક્ઝિક્યુટેડ કમાન્ડને મેળવવા માટે up arrow કી દબાવો.
04:01 અહીં દર્શાવ્યા પ્રમાણે કમાન્ડને મોડીફાય કરો.

અને Enter દબાવો.

04:08 આપણને આઉટપુટ જોઈતા ફોર્મેટમાં મળે છે.
04:12 હવે, ધારોકે આપણી નવી ઇનપુટ ફાઈલ એ sample.txt છે.
04:18 અવલોકન કરો કે field separator અહીં newline છે અને record separator એ બમણી newline છે.
04:27 આપણે આ ફાઈલમાંથી રોલ ક્રમાંક અને નામની માહિતી કેવી રીતે એક્સટ્રેક્ટ કરી શકીશું?
04:32 હા, તમે બરાબર અનુમાન લગાવ્યું. આપણે બંને FS અને RS variables મોડીફાય કર્યા છે.
04:39 આ ટ્યુટોરીયલને અટકાવો અને આ એસાઇનમેન્ટ તરીકે કરો.
04:43 આગળ, ચાલો અન્ય built-in variables જોઈએ.
04:47 કેપિટલ NRawk દ્વારા પ્રોસેસ કરેલ Number of Records આપે છે.
04:53 કેપિટલ NF એ વર્તમાન રેકોર્ડમાં Number of Fields આપે છે.
04:59 ચાલો આના પર એક ઉદાહરણ જોઈએ.

ધારો કે, આપણને ફાઈલમાં અધૂરી લાઈનો શોધવી છે.

05:07 અહીં, અધૂરી લાઈનનો અર્થ છે કે તે સામાન્ય 6 ફિલ્ડ્સ કરતા ઓછું ધરાવે છે.
05:13 terminal પર જાવ. ચાલો હું Ctrl અને L કી વાપરીને ટર્મિનલ સાફ કરું.
05:20 દર્શાવ્યા પ્રમાણે કમાન્ડ ટાઈપ કરો.
05:24 ફિલ્ડ્સ pipe ચિન્હ દ્વારા જુદું પડવાના લીધે, BEGIN section માં pipe ચિન્હને FS વેલ્યુ સેટ કરો.
05:33 આગળ આપણે લખ્યું છે NF not equal to 6.
05:37 આ તપાસ કરે છે કે વર્તમાન લાઈનમાં ફિલ્ડ્સની સંખ્યા, 6 ના બરાબર છે કે નહિ.
05:43 જો સાચું હોય, તો print section $0 દ્વારા સૂચિત સમગ્ર લાઈન સાથે, રેકોર્ડની લાઈન સંખ્યા NR પ્રિન્ટ કરશે.
Enter દબાવો.
05:55 આઉટપુટમાં, આપણે જોઈ શકીએ છીએ કે રેકોર્ડ ક્રમાંક 16 એ અધૂરો રેકોર્ડ છે.

6 ના બદલે તેમાં ફક્ત 5 fields છે.

06:05 ચાલો વધુ એક ઉદાહરણ જોઈએ.

કેટલા fields છે તેના તરફે ધ્યાન ન આપી આપણે દરેક વિદ્યાર્થી માટે પ્રથમ અને છેલ્લું field કેવી રીતે પ્રિન્ટ કરી શકીએ છીએ?

06:16 અહીં terminal પર દર્શાવ્યા પ્રમાણે કમાન્ડ ટાઈપ કરો.
06:21 અહીં આપણે FS variable સેટ કરવાના બદલે hyphen capital F વિકલ્પ વાપર્યો છે.
Enter દબાવો.
06:30 આપણે ફાઈલમાં દરેક રેકોર્ડ માટે ફક્ત પ્રથમ અને છેલ્લું fields મેળવીએ છીએ.
06:36 ચાલો હવે બીજું કંઈક પ્રયાસ કરીએ.
06:39 ધારો કે, વિદ્યાર્થી રેકોર્ડ્સ બે ફાઈલો demo1.txt, demo2.txt માં વિતરિત થાય છે.
06:48 આપણે આ દરેક બે ફાઈલથી પ્રથમ 3 લાઈનો પ્રિન્ટ કરવા ઇચ્છીએ છીએ.

આપણે આ NR variable વાપરીને કરી શકીએ છીએ.

06:57 અહીં બે ફાઈલોના કન્ટેન્ટ્સ છે.
07:02 હવે દરેક ફાઈલમાંથી પ્રથમ 3 લાઈનો દર્શાવવા માટે, terminal પર આપેલ કમાન્ડ ટાઈપ કરો.
07:11 Enter દબાવો.
07:13 આઉટપુટ ફક્ત demo1.txt ફાઈલના પ્રથમ 3 રેકોર્ડ્સ દર્શાવે છે.
07:20 બીજી ફાઈલ માટે આપણે તેજ કેવી રીતે પ્રિન્ટ કરી શકીએ છીએ?
07:24 ઉપાય એ છે કે NR ના બદલે FNR વાપરવું.

FNR એ વર્તમાન ફાઈલમાં current record number છે.

07:34 પ્રત્યેક સમયે એક નવો રેકોર્ડ વાંચવા પર FNR વધે છે.
07:39 પ્રત્યેક સમયે એક નવી ઇનપુટ ફાઈલ શરુ થતી વખતે તે શૂન્ય પર ઈનિશલાઈઝ થાય છે.
07:46 પરંતુ NRawk એ પ્રોસેસ કરેલ ઇનપુટ રેકોર્ડ્સની સંખ્યા છે જ્યારથી પ્રોગ્રામનું એક્ઝિક્યુશન શરુ થયેલ છે.
07:55 નવી ફાઈલ સાથે તે શૂન્ય પર રીસેટ થતું નથી.
07:59 terminal પર જાવ.

પાછલા એક્ઝિક્યુટેડ કમાન્ડને મેળવવા હેતુ up arrow કી દબાવો.

08:06 પાછલા કમાન્ડને નીચે આપ્યા પ્રમાણે મોડીફાય કરો.

NR ના બદલે FNR ટાઈપ કરો.

08:14 Print section માં, NR ની આગળ, ટાઈપ કરો FNR. Enter દબાવો.
08:21 જુઓ, આપણને હવે યોગ્ય આઉટપુટ મળે છે.

FNR એ નવી ફાઈલ સાથે શૂન્ય પર સેટ થયું છે પરંતુ NR એ વધતું રહે છે.

08:31 ચાલો કેટલાક બીજા built-in variables તરફે જોઈએ.

FILENAME વેરિએબલ એ ફાઈલનું નામ આપે છે જે વંચાય છે.

08:40 ARGCcommand line પર આપેલ arguments ની સંખ્યા નિર્દિષ્ટ કરે છે.
08:46 ARGVarray રજૂ કરે છે જે command line arguments સંગ્રહે છે.
08:52 ENVIRONshell environment variables નો array અને સંદર્ભિત વેલ્યુઓ નિર્દિષ્ટ કરે છે.
09:00 જો કે ARGV અને ENVIRONawk માં array વાપરે છે, આપણે તેમને આગળના ટ્યુટોરીયલોમાં જોશું.
09:09 હવે ચાલો વેરિએબલ FILENAME પર નજર ફેરવીએ.

પ્રોસેસ થતી વર્તમાન ફાઈલનું નામ આપણે કેવી રીતે પ્રિન્ટ કરી શકીએ છીએ?

09:18 terminal પર જાવ અને દર્શાવ્યા પ્રમાણે કમાન્ડ ટાઈપ કરો.
09:23 અહીં આપણે string concatenation operator તરીકે space વાપરી છે.

કમાન્ડને એક્ઝિક્યુટ કરવા માટે Enter દબાવો.

09:32 આઉટપુટ input filename ઘણી વાર દર્શાવે છે.
09:37 આ એટલા માટે કારણ કે, આ કમાન્ડ awkdemo.txt ફાઈલમાં દરેક રો (પંક્તિ) માટે એકવાર ફાઈલનેમ પ્રિન્ટ કરે છે.

આપણે આ ફક્ત એકવાર કેવી રીતે પ્રિન્ટ કરી શકીએ છીએ?

09:48 terminal ને સાફ કરો

પાછલા એક્ઝિક્યુટેડ કમાન્ડને મેળવવા માટે up arrow કી દબાવો.

09:55 અહીં દર્શાવ્યા પ્રમાણે પાછલા કમાન્ડને મોડીફાય કરો.

Enter દબાવો.

10:02 હવે, આપણને ફાઈલનેમ ફક્ત એકવાર મળે છે.
10:06 awk માં અહીં કેટલાક અન્ય built-in variables છે.

તેમના પર વધુ જાણવા માટે ઇન્ટરનેટ બ્રાઉઝ કરો.

10:14 ધારોકે, આપણે એ વિદ્યાર્થીઓ શોધવા છે જેઓ પાસ થયા છે અને શિષ્યવૃત્તિકા તરીકે રૂ.8000 થી વધુ મેળવે છે.
10:22 output field separator તરીકે comma વાપરો અને footer section માં “The data is shown for file” અને ફાઈલનું નામ પ્રિન્ટ કરો.

આપણે આ કેવી રીતે કરી શકીએ?

10:36 terminal માં, આપેલ કમાન્ડ ટાઈપ કરો

Enter દબાવો.

10:43 આપણે જોઈ શકીએ છીએ કે ફક્ત એક વિદ્યાર્થી પાસ થયેલ છે અને રૂ.8000 થી વધુ શિષ્યવૃત્તિકા મેળવે છે.

અને રેકોર્ડ ક્રમાંક છે 2.

10:53 સાથે જ આપણે, ઈચ્છા અનુસાર, footer માં ફાઈલનું નામ જોઈ શકીએ છીએ.
10:58 આપણે awk નો ઉપયોગ વધુથી વધુ જટિલ કાર્યો માટે કરી શકીએ છીએ.
11:03 તે કિસ્સામાં, terminal પર દરેક વખતે commands લખવું વધુ મુશ્કેલ બને છે.
11:09 આપણે તેના બદલે એક જુદી ફાઈલમાં awk પ્રોગ્રામ લખી શકીએ છીએ.
11:14 એક્ઝિક્યુટેબલ બનાવવા માટે, તે ફાઈલનું એક્સટેન્શન dot awk હોવું જોઈએ.
11:19 એક્ઝિક્યુટ કરતી વખતે, આપણે ફક્ત awk command સાથે આ awk પ્રોગ્રામ ફાઈલનેમ નિર્દિષ્ટ કરી શકીએ છીએ.
11:26 આવું કરવા માટે, આપણે hyphen small f વિકલ્પ વાપરવાની જરૂર છે.

ચાલો એક ઉદાહરણ જોઈએ.

11:35 મેં પહેલાથી જ એક awk પ્રોગ્રામ લખ્યું છે અને તેને prog1 dot awk તરીકે સેવ કર્યું છે.
11:42 આ કોડ Code Files લિંકમાં પણ ઉપલબ્ધ છે.
11:46 terminal પર જાવ.

જુઓ આપણે છેલ્લા એક્ઝિક્યુટ કરેલ command ના single quotes અંતર્ગત શું લખ્યું છે?

11:55 prog1.awk ફાઈલનું કન્ટેન્ટ બિલકુલ સમાન છે.
12:00 ફક્ત એ તફાવત છે કે awk ફાઈલમાં, આપણે single quotes અંતર્ગત લખ્યું નથી.
12:07 ફાઈલને એક્ઝિક્યુટ કરવા માટે, terminal પર આપેલ ટાઈપ કરો-

awk space hyphen small f space prog1.awk space awkdemo.txt અને Enter દબાવો.

12:24 આપણે પહેલા જોયું હતું તે પ્રમાણે આપણને સમાન આઉટપુટ મળે છે.
12:29 તો, આ પ્રમાણે તમે awk પ્રોગ્રામ લખી શકો છો અને તેને અનેક વખતે વાપરી શકો છો.
12:35 અહીં આ ટ્યુટોરીઅલનો અંત થાય છે.

ચાલો સારાંશ લઈએ.

12:40 આ ટ્યુટોરીઅલમાં આપણે આપેલ વિશે શીખ્યા- Built-in variables
awk script

વિભિન્ન ઉદાહરણ વાપરીને.

12:48 એસાઇનમેન્ટ તરીકે- awkdemo.txt ફાઈલમાં 5 મી લાઈનના છેલ્લા ફિલ્ડને પ્રિન્ટ કરવા માટે એક awk સ્ક્રીપ્ટ લખો.
12:58 terminal પર સિસ્ટમ ફાઈલ /etc/passwd ખોલો.
13:05 તેમાંના તમામ separators ઓળખો.
13:09 હવે ફાઈલને 20 મી લાઈનથી આગળ પ્રોસેસ કરવા માટે એક script લખો.
13:15 તે પણ, ફક્ત 6 ફિલ્ડ્સથી વધારે ધરાવતી લાઈનો માટે.
13:20 તમે line number, સમગ્ર લાઈન અને તે ચોક્કસ લાઈનમાંના fields ની સંખ્યા પ્રિન્ટ કરવી જોઈએ.
13:28 આપેલ લિંક પર ઉપલબ્ધ વિડિઓ સ્પોકન ટ્યુટોરીયલ પ્રોજેક્ટનો સારાંશ આપે છે.

કૃપા કરી તેને ડાઉનલોડ કરીને નિહાળો.

13:36 Spoken Tutorial Project ટીમ સ્પોકન ટ્યુટોરીયલોનો ઉપયોગ કરીને વર્કશોપો આયોજે છે અને પ્રમાણપત્રો આપે છે.

વધુ વિગત માટે, કૃપા કરી અમને લખો.

13:47 તમારા પ્રશ્નોને આ ફોરમ પર પોસ્ટ કરો.
13:51 સ્પોકન ટ્યુટોરીયલ પ્રોજેક્ટને NMEICT, MHRD, ભારત સરકાર દ્વારા ફાળો અપાયો છે.

આ મિશન પર વધુ માહિતી આ લિંક પર ઉપલબ્ધ છે.

14:03 ભાષાંતર કરનાર, હું ભરત સોલંકી હવે આપથી વિદાય લઉં છું.

જોડાવા બદ્દલ આભાર.

Contributors and Content Editors

Bharat636