Linux-AWK/C2/Built-in-Variables-in-awk/Gujarati
|
|
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 | કેપિટલ RS એ input ફાઈલમાં record separator નિર્દિષ્ટ કરે છે. મૂળભૂત રીતે, તે newline છે. |
01:07 | કેપિટલ FS એ input ફાઈલમાં field separator નિર્દિષ્ટ કરે છે. |
01:13 | મૂળભૂત રીતે, FS ની વેલ્યુ એક whitespace છે. |
01:18 | કેપિટલ ORS એ output record separator વ્યાખ્યાયિત કરે છે.
મૂળભૂત રીતે, તે newline છે. |
01:27 | કેપિટલ OFS એ output field separator વ્યાખ્યાયિત કરે છે.
મૂળભૂત રીતે, તે whitespace છે. |
01:36 | ચાલો આ દરેકનો અર્થ સમજીએ. |
01:40 | ચાલો હવે awkdemo ફાઈલ પર નજર ફેરવીએ. |
01:44 | જ્યારે આપણે આ awkdemo ફાઈલને awk કમાન્ડ સાથે પ્રોસેસ કરીએ છીએ ત્યારે, આ આપણી input ફાઈલ બને છે. |
01:51 | અવલોકન કરો, તમામ રેકોર્ડ્સ એક newline character દ્વારા એકબીજાથી જુદા પડ્યા છે. |
01:58 | newline એ record 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 | કેપિટલ NR એ awk દ્વારા પ્રોસેસ કરેલ 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 | પરંતુ NR એ awk એ પ્રોસેસ કરેલ ઇનપુટ રેકોર્ડ્સની સંખ્યા છે જ્યારથી પ્રોગ્રામનું એક્ઝિક્યુશન શરુ થયેલ છે. |
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 | ARGC એ command line પર આપેલ arguments ની સંખ્યા નિર્દિષ્ટ કરે છે. |
08:46 | ARGV એ array રજૂ કરે છે જે command line arguments સંગ્રહે છે. |
08:52 | ENVIRON એ shell environment variables નો array અને સંદર્ભિત વેલ્યુઓ નિર્દિષ્ટ કરે છે. |
09:00 | જો કે ARGV અને ENVIRON એ awk માં 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 | ભાષાંતર કરનાર, હું ભરત સોલંકી હવે આપથી વિદાય લઉં છું.
જોડાવા બદ્દલ આભાર. |