AWK આદેશો અને સ્ક્રિપ્ટ્સ કેવી રીતે લખો

આદેશો, વાક્યરચના, અને ઉદાહરણો

આ awk આદેશ ટેક્સ્ટ ફાઇલોને પ્રોસેસિંગ અથવા વિશ્લેષણ કરવાની એક શક્તિશાળી પદ્ધતિ છે-ખાસ કરીને, માહિતી ફાઇલો (પંક્તિઓ) અને કૉલમ્સ દ્વારા ગોઠવાયેલા છે.

સરળ awk આદેશો આદેશ વાક્યમાંથી ચલાવી શકાય છે. વધુ જટિલ ક્રિયાઓ એજેક પ્રોગ્રામ્સ (કહેવાતી એજેક સ્ક્રિપ્ટ્સ) તરીકે ફાઇલમાં લખવી જોઈએ.

એક awk આદેશનું મૂળભૂત સ્વરૂપ આની જેમ દેખાય છે:

awk 'pattern {action}' input-file> આઉટપુટ-ફાઈલ

આનો અર્થ એ થાય છે: ઇનપુટ ફાઇલની દરેક લીટી લો; જો રેખામાં પેટર્ન લાગુ પડે છે તો લીટી પર ક્રિયા લાગુ પડે છે અને પરિણામી વાક્ય આઉટપુટ-ફાઈલમાં લખે છે. જો પેટર્ન અવગણવામાં આવે છે, તો ક્રિયા બધા રેખા પર લાગુ થાય છે. દાખ્લા તરીકે:

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

આ નિવેદન દરેક લીટીના 5 મી કૉલમના ઘટકને લે છે અને તેને આઉટપુટ ફાઇલ "આઉટપુટ. ટેક્સટ" માં એક લીટી તરીકે લખે છે. વેરીએબલ '$ 4' નો ઉલ્લેખ બીજા કૉલમમાં થાય છે. તેવી જ રીતે તમે $ 1, $ 2, $ 3, વગેરે સાથે પ્રથમ, સેકન્ડ અને ત્રીજી કૉલમ એક્સેસ કરી શકો છો. મૂળભૂત સ્તંભોને ખાલી જગ્યા અથવા ટૅબ્સ (કહેવાતી સફેદ જગ્યા) દ્વારા અલગ પાડવામાં આવે છે. તેથી, જો ઇનપુટ ફાઇલ "table1.txt" આ રેખાઓ ધરાવે છે:

1, જ્સ્ટિન ટિમ્બરલેક, શીર્ષક 545, ભાવ $ 7.30 2, ટેલર સ્વિફ્ટ, ટાઇટલ 723, પ્રાઇસ 7.90 $, મિક જાગર, ટાઇટલ 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

આ દરેક લીટીના સ્તંભ 3 માંથી તત્વ પસંદ કરશે જો કૉલમ્સ અલ્પવિરામ દ્વારા અલગ પાડવામાં આવે તો તેથી આઉટપુટ, આ કિસ્સામાં, હશે:

શીર્ષક 545 શીર્ષક 723 શીર્ષક 610 શીર્ષક 118 શીર્ષક 482 શીર્ષક 335 શીર્ષક 271 શીર્ષક 373

સર્પાકાર કૌંસ ('{', '}') ની અંદરના નિવેદનોની સૂચિને બ્લોક કહેવામાં આવે છે. જો તમે બ્લોકની સામે શરતી અભિવ્યક્તિ મૂકી દો, તો બ્લોકની અંદરની વિધાન માત્ર ત્યારે જ અમલમાં મુકવામાં આવશે જ્યારે સ્થિતિ સાચું હોય.

awk '$ 7 == "\ $ 7.30" {print $ 3}' ટેબલ 1.txt

આ કિસ્સામાં, શરત $ 7 == "\ $ 7.30" છે, જેનો અર્થ છે કે કૉલમ 7 પરનો તત્ત્વ $ 7.30 જેટલું છે. ડૉલર સાઇનની સામે બેકસ્લેશનો ઉપયોગ સિસ્ટમને ચલણના રૂપમાં $ 7 તરીકે અર્થઘટન કરવાથી રોકવા માટે વપરાય છે અને તેના બદલે ડોલરનું ચિહ્ન શાબ્દિક રીતે લો.

તેથી આ અક્કડ નિવેદન દરેક લીટીના ત્રીજા કૉલમમાં તત્વને છાપે છે જે સ્તંભ 7 પર "$ 7.30" ધરાવે છે.

શરત તરીકે તમે નિયમિત સમીકરણો પણ વાપરી શકો છો. દાખ્લા તરીકે:

awk '/ 30 / {પ્રિન્ટ $ 3}' ટેબલ 1.txt

બે સ્લેશ ('/') ની વચ્ચેની સ્ટ્રિગ એ નિયમિત સમીકરણ છે. આ કિસ્સામાં, તે ફક્ત "30." શબ્દમાળા છે આનો અર્થ એ કે જો રેખામાં શબ્દમાળા "30" છે, તો સિસ્ટમ તે લીટીના ત્રીજા કૉલમ પર તત્વને છાપે છે. ઉપરોક્ત ઉદાહરણમાં આઉટપુટ હશે:

ટિમ્બરલેક, ગાગા, પ્રેસ્લી,

જો કોષ્ટક તત્વો નંબરો છે, તો આ ઉદાહરણ તરીકે તેમના પર ગણતરીઓ ચાલી શકે છે:

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

વર્તમાન પંક્તિ ($ 1, $ 2, વગેરે) ના ઘટકોનો ઉપયોગ કરતા વેરીએબલમાં વેરિયેબલ $ 0 છે જે સંપૂર્ણ પંક્તિ (રેખા), અને વેરિયેબલ એનએફ કે જે ક્ષેત્રોની સંખ્યાને ધરાવે છે તેનો ઉલ્લેખ કરે છે.

તમે આ ઉદાહરણ તરીકે નવા ચલોને પણ વ્યાખ્યાયિત કરી શકો છો:

awk '{sum = 0; માટે (કોલ = 1; col <= NF; col ++) sum + = $ col; પ્રિન્ટ રકમ; } '

આ દરેક હરોળના તમામ ઘટકોની ગણતરી કરે છે અને પ્રિન્ટ કરે છે.

અક્કડ નિવેદનો વારંવાર sed આદેશો સાથે જોડવામાં આવે છે.