Ahoana ny fomba hanoratana ny baiko sy ny sora-taratasy AWK

Ny baiko, ny syntax ary ny ohatra

Ny baikon'ny awk dia fomba mahery amin'ny fanitsiana na famakafakana ny rakitra an-tsoratra-indrindra fa ny antontan-drakitra momba ny angon-drakitra voatahiry amin'ny andalana (laharana) sy tsanganana.

Ny baikon'ny awk tsotra dia azo fehezina amin'ny baikon'ny baiko . Asa sarotra maro tokony hosoratana ho fandaharam-pahaizana hafahafa (antsoina hoe scripts).

Ny endrika fototra amin'ny baikon'ny awk dia toy izao:

awk 'pattern {action}' input-file> output-file

Midika izany fa: alao ny tsipika tsirairay avy ny antontan-taratasy; Raha toa ka misy ny lamina dia ampiharinao ny lahasa ho an'ny tsipika ary manorata ny andalana entina mankany amin'ny dossier output. Raha lany ilay lamina, dia ampiharina amin'ny tsipika rehetra ilay asa. Ohatra:

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

Ity fanambarana ity dia mandray ny singa ao amin'ny andalana faha-5 amin'ny andalana tsirairay ary manoratra azy ho andalana ao amin'ny tahirin-tsinjara "output.txt". Ny fari-piadidiana '$ 4' dia manondro ny tsanganana faharoa. Azonao atao ihany koa ny miditra amin'ny tsanganana voalohany, faharoa, ary fahatelo, miaraka amin'ny $ 1, $ 2, $ 3, sns. Raha jerena ny tsanganana voafaritry ny sehatra na rohy (antsoina hoe toerana malalaka). Noho izany, raha misy ny andefasana "table1.txt" ahitana ireto andalana ireto:

1, Justin Timberlake, Title 545, Price $ 7.30 2, Taylor Swift, Title 723, Price $ 7.90 3, Mick Jagger, Title 610, Price $ 7.90 4, Lady Gaga, Title 118, Price $ 7.30 5, Johnny Cash, Title 482, Price $ 6.50 6, Elvis Presley, Lohateny 335, Price $ 7.30 7, John Lennon, Lohateny 271, Price $ 7.90 8, Michael Jackson, Lohateny 373, Price $ 5.50

Avy eo ny baiko dia manoratra ireto andalana manaraka ireto: "output1.txt":

545, 723, 610, 118, 482, 335, 271, 373,

Raha toa ny separatora fantsona dia zavatra hafa ankoatra ny habaka na ny tabilao, toy ny takelaka iray, dia azonao atao ny manamarika izany ao amin'ny fanambarana mahazatra toy izao:

awk -F, '{print $ 3}' table1.txt> output1.txt

Io dia mifidy ny singa ao amin'ny tsanganana 3 amin'ny tsipika tsirairay raha heverina ho nosarahan'ny andian-tsoratra ny andalana. Noho izany ny vokatra, amin'ity tranga ity, dia:

Lohateny 545 Lohateny 723 Lohateny 610 Lohateny 118 Lohateny 482 Lohateny 335 Lohateny 271 Lohateny 373

Ny lisitr'ireo fanambarana ao anatin'ireo paroasy mahatsiravina ('{', '}') dia antsoina hoe sakana. Raha toa ianao ka mametraka fehezanteny manoloana ny sakana iray, dia tsy maintsy atao ny fanambarana ao anatin'ilay sakana raha tsy marina ny fepetra.

$ 7 == "$ 7.30" {print $ 3} 'table1.txt

Ao amin'io tranga io, ny fepetra dia $ 7 == "$ 7.30", midika izany fa ny singa amin'ny tsanganana 7 dia mitovy $ 7.30. Ny tsipika mitatao eo anoloan'ny mari-pana amin'ny dollar dia ampiasaina mba hisakanana ny rafitra tsy handika ny $ 7 ho toy ny fari-pahaizaovana ary faingo ny marika dolara ara-bakiteny.

Noho izany ity fanambarana tsy dia mazava ity dia mamoaka ny singa ao amin'ny andalana fahatelo amin'ny andalana tsirairay izay misy "$ 7.30" ao amin'ny tsanganana 7.

Azonao ampiasaina ihany koa ny teny mahazatra . Ohatra:

awk '/ 30 / {print $ 3}' table1.txt

Ny tsipika misy eo amin'ireo kofehy roa ('/') dia fanehoana matetika. Ao amin'io tranga io, dia ny "string" fotsiny ihany. Midika izany fa raha misy tsipika iray ahitana ny tsipika "30", ny rafitra dia mamoaka ny singa ao amin'ny tsanganana fahatelo amin'io tsipika io. Ny vokatra amin'ity ohatra etsy ambony ity dia:

Timberlake, Gaga, Presley,

Raha toa ny singa latabatra dia marika dia afaka mampihatra ireo kajika eo amin'izy ireo toy izao amin'ity ohatra ity:

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

Ankoatra ireo fari-kaonty misy ny rohy misy ankehitriny ($ 1, $ 2, sns.), Dia misy ny $ 0 mifandraika amin'ny laharan-tariby manontolo, ary ny variable NF izay misy ny isa.

Azonao atao koa ny mamaritra ny toetra vaovao tahaka izao amin'ity ohatra ity:

awk '{sum = 0; fa (col = 1; col <= NF; col ++) sum + = $ col; print sum; } '

Izany dia manitsy sy manonta ny singa amin'ny singa rehetra ao amin'ny laharana tsirairay.

Ny fanambarana Awk dia matetika mifampiankina miaraka amin'ny baikon'ny baiko .