20 halimbawa ng awk

20 Awk Examples



Maraming mga tool ng utility ang umiiral sa operating system ng Linux upang maghanap at makabuo ng isang ulat mula sa data ng teksto o file. Madaling maisagawa ng gumagamit ang maraming uri ng paghahanap, pagpapalit at pag-uulat ng pagbubuo ng mga gawain sa pamamagitan ng paggamit ng mga awk, grep at sed utos. ang awk ay hindi lamang isang utos. Ito ay isang wika ng scripting na maaaring magamit mula sa parehong terminal at awk file. Sinusuportahan nito ang variable, kondisyon na pahayag, array, mga loop atbp tulad ng iba pang mga wika sa pag-script. Maaari itong basahin ang anumang linya ng nilalaman ng file sa pamamagitan ng linya at paghiwalayin ang mga patlang o haligi batay sa isang tukoy na delimiter. Sinusuportahan din nito ang regular na pagpapahayag para sa paghahanap ng partikular na string sa nilalaman ng teksto o file at nagsasagawa ng mga pagkilos kung may natagpuang mga tugma. Kung paano mo magagamit ang awk command at script ay ipinapakita sa tutorial na ito sa pamamagitan ng paggamit ng 20 kapaki-pakinabang na halimbawa.

Mga Nilalaman:

  1. awk sa printf
  2. awk upang hatiin sa puting espasyo
  3. awk upang baguhin ang delimiter
  4. awk sa tab-delimited data
  5. awk sa data ng csv
  6. awk regex
  7. kaso kaso insensitive regex
  8. awk sa nf (bilang ng mga patlang) variable
  9. pagpapaandar ng awk gensub ()
  10. awk sa pag-andar ng rand ()
  11. function na tinukoy ng awk user
  12. awk kung
  13. variable ng awk
  14. arrays ng awk
  15. awk loop
  16. awk upang mai-print ang unang haligi
  17. awk upang mai-print ang huling haligi
  18. awk sa grep
  19. awk sa bash script file
  20. awk kay sed

Paggamit ng awk sa printf

printf () Ginagamit ang pagpapaandar upang mai-format ang anumang output sa karamihan ng mga wika ng programa. Ang pagpapaandar na ito ay maaaring magamit sa ang awkward utos upang makabuo ng iba't ibang mga uri ng format na output. pangunahin ang utos ng awk para sa anumang file ng teksto. Lumikha ng isang text file na pinangalanan empleyado.txt kasama ang nilalamang ibinigay sa ibaba kung saan ang mga patlang ay pinaghiwalay ng tab (‘ t’).







empleyado.txt



1001 John sena 40000
1002 Jafar Iqbal 60000
1003 Meher Nigar 30000
1004 Jonny Liver 70000

Ang sumusunod na command na awk ay magbabasa ng data mula sa empleyado.txt linya ng file sa pamamagitan ng linya at i-print ang unang nai-file pagkatapos ng pag-format. Dito, % 10s n nangangahulugang ang output ay magiging 10 character ang haba. Kung ang halaga ng output ay mas mababa sa 10 mga character pagkatapos ang mga puwang ay idaragdag sa harap ng halaga.



$ awk'{printf'% 10s n', $ 1}'empleado.txt

Output:





Pumunta sa Nilalaman



awk upang hatiin sa puting espasyo

Ang default na separator ng salita o patlang para sa paghahati ng anumang teksto ay puting puwang. awk command ay maaaring tumagal ng halaga ng teksto bilang input sa iba't ibang mga paraan. Ang input text ay ipinasa mula sa itinapon utos sa sumusunod na halimbawa. Ang teksto, ' Gusto ko ng programa ’Ay hahatiin sa pamamagitan ng default na separator, space , at ang pangatlong salita ay mai-print bilang output.

$itinapon 'Gusto ko ng programa' | ang awkward '{print $ 3}'

Output:

Pumunta sa Nilalaman

awk upang baguhin ang delimiter

Maaaring magamit ang command na awk upang baguhin ang delimiter para sa anumang nilalaman ng file. Ipagpalagay, mayroon kang isang file ng teksto na pinangalanan telepono.txt kasama ang sumusunod na nilalaman kung saan ang ‘:’ ay ginagamit bilang field separator ng nilalaman ng file.

telepono.txt

+123: 334: 889: 778
+880: 1855: 456: 907
+9: 7777: 38644: 808

Patakbuhin ang sumusunod na command na awk upang baguhin ang delimiter, ‘:’ ni ‘-’ sa nilalaman ng file, telepono.txt .

$ cat phone.txt
$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt

Output:

Pumunta sa Nilalaman

awk sa tab-delimited data

Ang awk command ay maraming mga built-in na variable na ginagamit upang basahin ang teksto sa iba't ibang paraan. Dalawa sa kanila ay FS at OFS . FS ay naghihiwalay ng patlang ng input at OFS ay mga variable ng separator ng output field. Ang mga paggamit ng mga variable na ito ay ipinapakita sa seksyong ito. Gumawa ng tab pinaghiwalay na file na pinangalanan input.txt kasama ang sumusunod na nilalaman upang subukan ang mga gamit ng FS at OFS variable.

Input.txt

Wika ng script sa panig ng kliyente
Wika ng script sa panig ng server
Database Server
Web Server

Paggamit ng variable ng FS na may tab

Hahatiin ng sumusunod na utos ang bawat linya ng input.txt file batay sa tab (‘ t’) at i-print ang unang patlang ng bawat linya.

$ang awkward '{print $ 1}' FS=' t'input.txt

Output:

Paggamit ng variable ng OFS na may tab

Ang sumusunod na command na awk ay i-print ang 9ika at 5ika larangan ng 'Ls -l' output ng utos na may separator ng tab pagkatapos i-print ang pamagat ng haligi Pangalan at Sukat . Dito, OFS ginagamit ang variable upang mai-format ang output ng isang tab.

$ls -ang
$ls -ang | ang awkward -v OFS=' t' 'BEGIN {printf'% s t% s n ',' Pangalan ',' Laki '} {print $ 9, $ 5}'

Output:

Pumunta sa Nilalaman

awk sa data ng CSV

Ang nilalaman ng anumang CSV file ay maaaring mai-parse sa maraming paraan sa pamamagitan ng paggamit ng awk command. Lumikha ng isang CSV file na pinangalanang ‘ customer.csv ’Kasama ang sumusunod na nilalaman upang mailapat ang awk command.

customer.txt

Id, Pangalan, email, telepono
1, Sophia, [protektado ng email], (862) 478-7263
2, Amelia, [protektado ng email], (530) 764-8000
3, Emma, ​​[protektado ng email], (542) 986-2390

Nagbabasa ng solong larangan ng CSV file

‘-F’ Ginagamit ang pagpipilian na may awk command upang maitakda ang delimiter para sa paghahati ng bawat linya ng file. Ang sumusunod na command na awk ay i-print ang pangalan larangan ng ang customer.csv file

$pusacustomer.csv
$ang awkward -F ',' '{print $ 2}'customer.csv

Output:

Nagbabasa ng maraming mga patlang sa pamamagitan ng pagsasama sa iba pang teksto

Ang sumusunod na utos ay mag-print ng tatlong mga patlang ng customer.csv sa pamamagitan ng pagsasama ng teksto ng pamagat, Pangalan, Email, at Telepono . Ang unang linya ng customer.csv Naglalaman ang file ng pamagat ng bawat patlang. HINDI naglalaman ang variable ng numero ng linya ng file kapag na-parse ng awk command ang file. Sa halimbawang ito, ang NR Ginagamit ang variable upang alisin ang unang linya ng file. Ipapakita ng output ang 2nd, 3rdat 4ikamga patlang ng lahat ng mga linya maliban sa unang linya.

$ang awkward -F ',' 'NR> 1 {print' Pangalan: '$ 2', Email: '$ 3', Telepono: '$ 4}'customer.csv

Output:

Pagbasa ng CSV file gamit ang isang awk script

ang script ng awk ay maaaring maipatupad sa pamamagitan ng pagpapatakbo ng awk file. Kung paano ka makakalikha ng awk file at patakbuhin ang file ay ipinapakita sa halimbawang ito. Lumikha ng isang file na pinangalanan awkcsv.awk kasama ang sumusunod na code. MAGSIMULA ginamit ang keyword sa script para sa pagpapaalam sa awk command upang maipatupad ang script ng MAGSIMULA hatiin muna bago ipatupad ang iba pang mga gawain. Dito, separator ng patlang ( FS ) ay ginagamit upang tukuyin ang paghahati delimiter at 2ndat 1stang mga patlang ay mai-print ayon sa format na ginamit sa pagpapaandar ng printf ().

awkcsvang awkward
MAGSIMULA{FS= ','} { printf '% 5s (% s) n',$2,$1}

Takbo awkcsv.awk file na may nilalaman ng ang customer.csv file sa pamamagitan ng sumusunod na utos.

$ang awkward -fawkcsv.awk customer.csv

Output:

Pumunta sa Nilalaman

awk regex

Ang regular na expression ay isang pattern na ginagamit upang maghanap ng anumang string sa isang teksto. Ang iba't ibang mga uri ng kumplikadong paghahanap at palitan ang mga gawain ay maaaring magawa ng napakadali sa pamamagitan ng paggamit ng regular na expression. Ang ilang mga simpleng paggamit ng regular na expression na may awk command ay ipinapakita sa seksyong ito.

Pagtutugma ng tauhanitakda

Ang sumusunod na utos ay tutugma sa salita Bobo o bool o Malamig gamit ang input string at i-print kung ang salita ay natagpuan. Dito, Manika hindi tutugma at hindi mai-print.

$printf 'Maloko nMalamig nManika nbool ' | ang awkward '/ [FbC] ool /'

Output:

Naghahanap ng string sa simula ng linya

‘^’ simbolo ay ginagamit sa regular na expression upang maghanap ng anumang mga pattern sa simula ng linya. ' Linux ' ang salita ay hahanapin sa simula ng bawat linya ng teksto sa sumusunod na halimbawa. Dito, nagsisimula ang dalawang linya sa teksto, ‘Linux ’At ang dalawang linya na iyon ay ipapakita sa output.

$itinapon -At 'Linux ay malayang gamitin nIto ay isang open-source software nAng LinuxHint ay
isang tanyag na blog site '
| ang awkward '/ ^ Linux /'

Output:

Naghahanap ng string sa dulo ng linya

'$' simbolo ay ginagamit sa regular na expression upang maghanap ng anumang mga pattern sa dulo ng bawat linya ng teksto. ' Script ’Salita ay hinanap sa sumusunod na halimbawa. Dito, naglalaman ang dalawang linya ng salitang, Script sa dulo ng linya.

$itinapon -At 'PHP Script nJavaScript nVisual Programming ' | ang awkward '/ Script $ /'

Output:

Naghahanap sa pamamagitan ng pag-alis ng partikular na hanay ng character

‘^’ simbolo ay nagsasaad ng simula ng teksto kapag ginamit ito sa harap ng anumang pattern ng string (‘/ ^… /’) o bago ang anumang itinakdang tauhan na idineklara ni ^ […] . Kung ang ‘^’ ginamit ang simbolo sa loob ng pangatlong bracket, [^…] pagkatapos ang tinukoy na character na itinakda sa loob ng bracket ay aalisin sa oras ng paghahanap. Ang sumusunod na utos ay maghanap ng anumang salita na hindi nagsisimula 'F' ngunit nagtatapos sa ' ool '. Malamig at bool ay mai-print ayon sa pattern at data ng teksto.

$ printf 'Maloko nMalamig nManika nbool ' |ang awkward'/ [^ F] ool /'

Output:

Pumunta sa Nilalaman

kaso kaso insensitive regex

Sa pamamagitan ng default, regular na expression ay kaso sensitibong paghahanap kapag naghahanap ng anumang mga pattern sa string. Ang case insensitive na paghahanap ay maaaring gawin ng awk command gamit ang regular na expression. Sa sumusunod na halimbawa, babaan() Ginagamit ang pagpapaandar upang gawin ang case insensitive na paghahanap. Dito, ang unang salita ng bawat linya ng input na teksto ay mai-convert sa mas mababang kaso sa pamamagitan ng paggamit babaan() pagpapaandar at tugma sa regular na pattern ng pagpapahayag. toupper () Maaari ding gamitin ang pagpapaandar para sa hangaring ito, sa kasong ito, ang pattern ay dapat na tinukoy ng lahat ng malaking titik. Ang teksto na tinukoy sa sumusunod na halimbawa ay naglalaman ng salitang naghahanap, 'Web 'Sa dalawang linya na kung saan ay mai-print bilang output.

$itinapon -At 'Disenyo ng web npag-unlad sa web nFramework ' | ang awkward 'tolower ($ 0) ~ / ^ web /;'

Output:

Pumunta sa Nilalaman

awk sa variable na NF (bilang ng mga patlang)

NF ay isang built-in na variable ng awk command na ginagamit upang mabilang ang kabuuang bilang ng mga patlang sa bawat linya ng input na teksto. Lumikha ng anumang file ng teksto na may maraming mga linya at maraming mga salita. ang input.txt ang file ay ginagamit dito na nilikha sa nakaraang halimbawa.

Paggamit ng NF mula sa linya ng utos

Dito, ginagamit ang unang utos upang maipakita ang nilalaman ng input.txt Ginamit ang file at pangalawang utos upang maipakita ang kabuuang bilang ng mga patlang sa bawat linya ng file na ginagamit NF variable.

$ cat input.txt
$ awk '{print NF}' input.txt

Output:

Paggamit ng NF sa awk file

Lumikha ng isang awk file na pinangalanan bilangin.awk kasama ang script na ibinigay sa ibaba. Kapag ang script na ito ay papatupad sa anumang data ng teksto pagkatapos ang bawat nilalaman ng linya na may kabuuang mga patlang ay mai-print bilang output.

bilangin.awk

{print $0}
{mag-print'[Kabuuang mga patlang:'NF']'}

Patakbuhin ang script sa pamamagitan ng sumusunod na utos.

$ang awkward -fcount.awk input.txt

Output:

Pumunta sa Nilalaman

pagpapaandar ng awk gensub ()

getsub () ay isang pagpapaandar na pagpapalit na ginagamit upang maghanap ng string batay sa partikular na delimiter o regular na pattern ng pagpapahayag. Ang pagpapaandar na ito ay tinukoy sa 'Gawk' package na hindi naka-install bilang default. Ang syntax para sa pagpapaandar na ito ay ibinibigay sa ibaba. Naglalaman ang unang parameter ng regular na pattern ng pagpapahayag o paghahanap ng delimiter, ang Pangalawang parameter ay naglalaman ng kapalit na teksto, ipinapahiwatig ng pangatlong parameter kung paano magagawa ang paghahanap at ang huling parameter ay naglalaman ng teksto kung saan mailalapat ang pagpapaandar na ito.

Syntax:

gensub(regexp, kapalit, paano[, target])

Patakbuhin ang sumusunod na utos upang mai-install gawk pakete para sa paggamit getsub () function na may awk utos.

$ sudo apt-get install gawk

Lumikha ng isang text file na nagngangalang ‘ salesinfo.txt ’Kasama ang sumusunod na nilalaman upang maisagawa ang halimbawang ito. Dito, ang mga patlang ay pinaghiwalay ng isang tab.

salesinfo.txt

Ang aking 700000
Ang iyong 800000
Wed 750000
Kolektahin ang 200000
Biyernes 430000
Sat 820000

Patakbuhin ang sumusunod na utos upang basahin ang mga patlang ng numero ng salesinfo.txt file at i-print ang kabuuan ng lahat ng halaga ng mga benta. Dito, ang pangatlong parameter, ang 'G' ay nagpapahiwatig ng pandaigdigang paghahanap. Nangangahulugan iyon na hahanapin ang pattern sa buong nilalaman ng file.

$ang awkward '{x = gensub (' t ',' ',' G ', $ 2); printf x '+'} TAPOS {print 0} 'salesinfo.txt| bc -ang

Output:

Pumunta sa Nilalaman

awk sa pag-andar ng rand ()

hilera () Ginagamit ang pagpapaandar upang makabuo ng anumang random na numero na mas malaki sa 0 at mas mababa sa 1. Kaya, palagi itong bubuo ng isang praksyonal na bilang na mas mababa sa 1. Ang sumusunod na utos ay bubuo ng isang praksyonal na random na numero at i-multiply ang halaga na may 10 upang makakuha ng isang numero na higit sa 1. Ang isang praksyonal na numero na may dalawang digit pagkatapos ng decimal point ay mai-print para sa paglalapat ng printf () function. Kung pinatakbo mo ang sumusunod na utos ng maraming beses makakakuha ka ng iba't ibang output sa bawat oras.

$ang awkward 'BEGIN {printf' Number is =%. 2f n ', rand () * 10}'

Output:

Pumunta sa Nilalaman

function na tinukoy ng awk user

Ang lahat ng mga pagpapaandar na ginagamit sa nakaraang mga halimbawa ay built-in na pag-andar. Ngunit maaari mong ideklara ang isang function na tinukoy ng gumagamit sa iyong script ng awk upang gawin ang anumang partikular na gawain. Ipagpalagay, nais mong lumikha ng isang pasadyang pagpapaandar upang makalkula ang lugar ng isang rektanggulo. Upang magawa ang gawaing ito, lumikha ng isang file na pinangalanang ‘ lugar.awk ’Kasama ang sumusunod na iskrip. Sa halimbawang ito, pinangalanan ang isang function na tinukoy ng gumagamit lugar () ay ipinahayag sa script na kinakalkula ang lugar batay sa mga input parameter at ibabalik ang halaga ng lugar. getline ginagamit ang utos dito upang kumuha ng input mula sa gumagamit.

lugar.awk

# Kalkulahin ang lugar
pagpapaandarlugar(taas,lapad){
bumalik kataas*lapad
}

# Nagsisimula ang pagpapatupad
MAGSIMULA{
mag-print'Ipasok ang halaga ng taas:'
getline h< '-'
mag-print'Ipasok ang halaga ng lapad:'
getline w< '-'
mag-print'Lugar ='lugar(h,sa)
}

Patakbuhin ang iskrip.

$ang awkward -flugar.awk

Output:

Pumunta sa Nilalaman

awk kung halimbawa

Sinusuportahan ng awk ang mga kondisyong pahayag tulad ng iba pang mga karaniwang wika ng programa. Tatlong uri ng kung ang mga pahayag ay ipinapakita sa seksyong ito sa pamamagitan ng paggamit ng tatlong mga halimbawa. Lumikha ng isang text file na pinangalanan mga item.txt kasama ang sumusunod na nilalaman.

mga item.txt

HDD Samsung $ 100
Mouse A4Tech
Printer ng HP $ 200

Simple kung halimbawa :

ang pagsunod sa utos ay babasahin ang nilalaman ng mga item.txt file at suriin ang 3rd halaga ng patlang sa bawat linya. Kung ang halaga ay walang laman pagkatapos ito ay mag-print ng isang mensahe ng error sa numero ng linya.

$ang awkward '{if ($ 3 ==' ') print' Ang patlang ng presyo ay nawawala sa linya 'NR}'mga item.txt

Output:

kung-iba pang halimbawa:

Ang sumusunod na utos ay mai-print ang presyo ng item kung ang 3rdang patlang ay umiiral sa linya, kung hindi man, magpi-print ito ng isang mensahe ng error.

$ awk'{if ($ 3 ==' ') print' Nawawala ang patlang ng presyo '
kung hindi man ang presyo ng item na naka-print ay '$ 3}'
mga itemtxt

Output:

kung -sa-kung halimbawa:

Kapag ang sumusunod na utos ay papatay mula sa terminal pagkatapos ay kukuha ito ng input mula sa gumagamit. Ihahambing ang halaga ng pag-input sa bawat kung kondisyon hanggang sa totoo ang kundisyon. Kung ang anumang kundisyon ay naging totoo pagkatapos ay mai-print nito ang kaukulang marka. Kung ang halaga ng pag-input ay hindi tumutugma sa anumang kundisyon sa gayon ay mabibigo itong mai-print.

$ang awkward 'BEGIN {print' Enter the mark: '
marka ng getline<'-'
kung (markahan> = 90) i-print ang 'A +'
kung hindi man kung (markahan> = 80) i-print ang 'A'
kung hindi man kung (markahan> = 70) i-print ang 'B +'
kung hindi man i-print ang 'Nabigo'} '

Output:

Pumunta sa Nilalaman

variable ng awk

Ang pagdeklara ng variable ng awk ay katulad ng pagdedeklara ng variable ng shell. Mayroong pagkakaiba sa pagbabasa ng halaga ng variable. Ginamit ang simbolong ‘$’ na may variable na pangalan para sa variable ng shell upang mabasa ang halaga. Ngunit hindi na kailangang gumamit ng '$' na may variable na awk upang mabasa ang halaga.

Paggamit ng simpleng variable:

Ang sumusunod na utos ay magdeklara ng isang variable na pinangalanan 'lugar' at isang halaga ng string ay nakatalaga sa variable na iyon. Ang halaga ng variable ay nakalimbag sa susunod na pahayag.

$ang awkward 'BEGIN {site =' LinuxHint.com '; print site} '

Output:

Gumagamit ng variable upang makuha ang data mula sa isang file

Ang sumusunod na utos ay hahanapin ang salita 'Printer' sa file mga item.txt . Kung ang anumang linya ng file ay nagsisimula sa ‘Printer ’Pagkatapos ay itatabi nito ang halaga ng 1st , 2nd at 3rd mga patlang sa tatlong variable. pangalan at presyo maililimbag ang mga variable.

$ awk'/ Printer / {name = $ 1; brand = $ 2; price = $ 3; print' item name = 'name;
print 'presyo ng item =' presyo} '
mga itemtxt

Output:

Pumunta sa Nilalaman

arrays ng awk

Ang parehong mga bilang at nauugnay na mga array ay maaaring magamit sa awk. Ang arrray variable ng deklarasyon sa awk ay pareho sa iba pang mga wika ng programa. Ang ilang mga paggamit ng mga arrays ay ipinapakita sa seksyong ito.

Associative Array:

Ang index ng array ay magiging anumang string para sa associate na array. Sa halimbawang ito, ang isang nag-uugnay na hanay ng tatlong mga elemento ay idineklara at naka-print.

$ang awkward 'MAGSIMULA {
mga libro ['Web Design'] = 'Pag-aaral ng HTML 5';
mga libro ['Web Programming'] = 'PHP at MySQL'
mga libro ['PHP Framework'] = 'Learning Laravel 5'
printf '% s n% s n% s n', mga libro ['Web Design'], mga libro ['Web Programming'],
mga libro ['PHP Framework']} '

Output:

Numero ng Array:

Ang isang bilang ng hanay ng tatlong mga elemento ay ipinahayag at naka-print sa pamamagitan ng paghihiwalay na tab.

$ awk'MAGSIMULA {
numero [0] = 80;
numero [1] = 55;
numero [2] = 76;

# i-print ang mga elemento ng array
printf 'Mga halaga ng Array:% d t% d t% d n', number [0], number [1], number [2]; } '

Output:

Pumunta sa Nilalaman

awk loop

Tatlong uri ng mga loop ang sinusuportahan ng awk. Ang mga gamit ng mga loop na ito ay ipinapakita dito sa pamamagitan ng paggamit ng tatlong mga halimbawa.

Habang loop:

habang ang loop na ginamit sa sumusunod na utos ay magtutuon ng 5 beses at lumabas mula sa loop para sa break statement.

$ ang awkward 'MAGSIMULA {n = 1; habang (n 5) masira; i-print n; n ++}} '

Output:

Para sa loop:

Para sa loop na ginagamit sa sumusunod na awk command ay makakalkula ang kabuuan mula 1 hanggang 10 at mai-print ang halaga.

$ang awkward 'BEGIN {sum = 0; para sa (n = 1; n<= 10; n++) sum=sum+n; print sum }'

Output:

Do-habang loop:

isang do-habang loop ng sumusunod na utos ay mai-print ang lahat ng kahit na mga numero mula 10 hanggang 5.

$ang awkward 'BEGIN {counter = 10; gawin ang {if (counter% 2 == 0) print counter; counter--}
habang (counter> 5)} '

Output:

Pumunta sa Nilalaman

awk upang mai-print ang unang haligi

Ang unang haligi ng anumang file ay maaaring mai-print sa pamamagitan ng paggamit ng $ 1 variable sa awk. Ngunit kung ang halaga ng unang haligi ay naglalaman ng maraming mga salita sa gayon ang unang salita lamang ng unang haligi ang naglilimbag. Sa pamamagitan ng paggamit ng isang tukoy na delimiter, ang unang haligi ay maaaring mai-print nang maayos. Lumikha ng isang text file na pinangalanan mag-aaral.txt kasama ang sumusunod na nilalaman. Dito, naglalaman ang unang haligi ng teksto ng dalawang salita.

Mga mag-aaral.txt

Kaniz Fatema 30ikabatch
Abir Hossain 35ikabatch
John Abraham 40ikabatch

Patakbuhin ang awk command nang walang anumang delimiter. Ang unang bahagi ng unang haligi ay mai-print.

$ang awkward '{print $ 1}'mag-aaral.txt

Patakbuhin ang awk command kasama ang sumusunod na delimiter. Ang buong bahagi ng unang haligi ay mai-print.

$ang awkward -F '\ s \ s' '{print $ 1}'mag-aaral.txt

Output:

Pumunta sa Nilalaman

awk upang mai-print ang huling haligi

$ (NF) maaaring magamit ang variable upang mai-print ang huling haligi ng anumang file. Ang mga sumusunod na command na awk ay i-print ang huling bahagi at buong bahagi ng huling haligi ng ang mga mag-aaral.txt file

$ang awkward '{print $ (NF)}'mag-aaral.txt
$ang awkward -F '\ s \ s' '{print $ (NF)}'mag-aaral.txt

Output:

Pumunta sa Nilalaman

awk sa grep

Ang grep ay isa pang kapaki-pakinabang na utos ng Linux upang maghanap ng nilalaman sa isang file batay sa anumang regular na expression. Kung paano maaaring magamit ang parehong mga awk at grep na utos ay ipinapakita sa sumusunod na halimbawa. mahigpit na pagkakahawak ginagamit ang utos upang maghanap ng impormasyon ng empleyado id, ‘ 1002 ’Mula sa ang empleyado.txt file Ang output ng utos na grep ay ipapadala sa awk bilang input data. Ang 5% na bonus ay mabibilang at mai-print batay sa suweldo ng empleyado id, ‘ 1002 ' sa pamamagitan ng aw command.

$pusaempleyado.txt
$mahigpit na pagkakahawak '1002'empleyado.txt| ang awkward -F ' t' '{print $ 2' ay makakakuha ng $ '($ 3 * 5) / 100' bonus '}'

Output:

Pumunta sa Nilalaman

awk sa BASH file

Tulad ng iba pang utos ng Linux, maaari ding magamit ang awk command sa isang script na BASH. Lumikha ng isang text file na pinangalanan mga customer.txt kasama ang sumusunod na nilalaman. Ang bawat linya ng file na ito ay naglalaman ng impormasyon sa apat na mga patlang. Ito ang ID ng customer, Pangalan, address at numero ng mobile na pinaghihiwalay ng ‘/ '.

mga customer.txt

AL4934 / Charles M Brunner / 4838 Beeghley Street, Huntsville, Alabama / 256-671-7942
CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, California / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road, Chicago, Illinois / 773-550-5107

Lumikha ng isang bash file na pinangalanan item_search.bash kasama ang sumusunod na iskrip. Ayon sa script na ito, ang halaga ng estado ay kukuha mula sa gumagamit at hinanap ang mga customer.txt file sa pamamagitan ng mahigpit na pagkakahawak utos at ipinasa sa awk command bilang input. Basahin ang utos ng utos 2nd at 4ika mga patlang ng bawat linya. Kung ang halaga ng pag-input ay tumutugma sa anumang halaga ng estado ng mga customer.txt file pagkatapos ay i-print nito ang customer pangalan at numero ng mobile , kung hindi man, mai-print nito ang mensahe Walang nahanap na customer .

item_search.bash

#! / baseng / bash
itinapon 'Ipasok ang pangalan ng estado:'
basahinestado
mga customer='mahigpit na pagkakahawak '$ estado'mga customer.txt| ang awkward -F '/' '{print' Pangalan ng Customer: '$ 2,',
Hindi Mobile: '$ 4}'
'
kung [ '$ mga customer' !=' ];tapos
itinapon $ mga customer
iba pa
itinapon 'Walang nahanap na customer'
maging

Patakbuhin ang mga sumusunod na utos upang ipakita ang mga output.

$pusamga customer.txt
$bashitem_search.bash

Output:

Pumunta sa Nilalaman

awk kay sed

Ang isa pang kapaki-pakinabang na tool sa paghahanap ng Linux ay sed . Maaaring gamitin ang utos na ito para sa parehong paghahanap at pagpapalit ng teksto ng anumang file. Ipinapakita ng sumusunod na halimbawa ang paggamit ng awk command kasama sed utos Dito, hahanapin ng sed command ang lahat ng mga pangalan ng empleyado na nagsisimula sa ‘ J ’At ipinapasa sa awk command bilang input. si impr ang magpi-print ng empleyado pangalan at ID pagkatapos ng pag-format.

$pusaempleyado.txt
$sed -n '/ J / p'empleyado.txt| ang awkward -F ' t' '{printf'% s (% s) n ', $ 2, $ 1}'

Output:

Pumunta sa Nilalaman

Konklusyon:

Maaari mong gamitin ang awk command upang lumikha ng iba't ibang mga uri ng mga ulat batay sa anumang tabular o na-delimit na data pagkatapos na ma-filter nang tama ang data. Inaasahan ko, matututunan mo kung paano gumagana ang awk command pagkatapos ng pagsasanay ng mga halimbawang ipinakita sa tutorial na ito.