Yadda za a Rubuta Dokokin AWK da Rubutun

Umurnai, haɗawa, da misalai

Dokar awk shine hanya mai mahimmanci don sarrafawa ko nazarin fayilolin rubutu-musamman, fayilolin bayanai wanda aka tsara ta layi (layuka) da ginshiƙai.

Za a iya yin amfani da umarnin sauƙaƙe daga layin umarni . Dole ne a rubuta karin ayyuka masu galihu a matsayin shirye-shiryen bidiyo (abin da ake kira awk scripts) zuwa fayil.

Tsarin tsari na umarni na awk yana kama da wannan:

Ayyukan tsari na awk 'fayil-shigarwa> fayil ɗin fitarwa

Wannan yana nufin: ɗauka kowane layin fayil na shigarwa; idan layin ya ƙunshi abin kwaikwayo ya yi amfani da aikin zuwa layin kuma rubuta jerin sakamakon zuwa fayil din kayan sarrafawa. Idan an cire alamar, ana aiwatar da aikin zuwa dukkan layi. Misali:

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

Wannan sanarwa yana ɗauke da kashi na 5th na kowane layi kuma ya rubuta shi a matsayin layi a cikin fayil mai fitarwa "output.txt". Ƙarin '$ 4' yana nufin shafi na biyu. Hakazalika za ka iya samun dama ga farko, na biyu, da kuma shafi na uku, tare da $ 1, $ 2, $ 3, da dai sauransu. Kayan ginshiƙai ana zaton zasu rabu da sarari ko shafuka (wanda ake kira farin wuri). Saboda haka, idan fayil din shigarwa "table1.txt" ya ƙunshi waɗannan layi:

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

Sa'an nan umarni zai rubuta waɗannan layi zuwa fayil din fitarwa "output1.txt":

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

Idan mai rarraba shafi shi ne wani abu banda wurare ko shafuka, kamar comma, za ka iya ƙayyade a cikin sanarwa ta awk kamar haka:

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

Wannan zai zaɓar nau'ikan daga shafi na 3 na kowane layi idan ana ɗaukar ginshiƙai da rabuwa ta hanyar wakafi. Saboda haka, fitarwa, a wannan yanayin, zai zama:

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

Jerin maganganun da ke cikin ƙuƙwalwar ƙuƙwalwa ('{', '}') ana kiransa toshe. Idan kun sanya furuci a gaban wani akwati, bayanin da yake cikin cikin toshe za a kashe ne kawai idan yanayin ya kasance gaskiya.

awk '$ 7 == "\ $ 7.30" {buga $ 3}' table1.txt

A wannan yanayin, yanayin shine $ 7 == "$ 7.30", wanda ke nufin cewa kashi a shafi na 7 yana daidai da $ 7.30. An yi amfani da bayanan da ke gaban alamar dollar don hana tsarin daga fassara $ 7 a matsayin m kuma maimakon ɗauka dollar a fili.

Saboda haka wannan sanarwa ta tayar da sashi a kashi na 3 na kowace layi wanda yana da "$ 7.30" a shafi na 7.

Hakanan zaka iya amfani da maganganun yau da kullum kamar yadda yanayin yake. Misali:

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

Maganganin tsakanin slashes biyu ("/") shine furcin yau da kullum. A wannan yanayin, kawai kawai layin "30." Wannan yana nufin idan layin yana ƙunshe da layin "30", tsarin yana fitar da kashi a jerin 3 na wannan layin. Da fitarwa a cikin misali mai zuwa zai zama:

Timberlake, Gaga, Presley,

Idan abubuwa masu launi sune lambobin lambobi zasu iya tafiyar da lissafi akan su kamar yadda a wannan misali:

Abk '{buga ($ 2 * $ 3) + $ 7}'

Baya ga masu canji cewa abubuwan samun dama na jere na yanzu ($ 1, $ 2, da dai sauransu) akwai m $ 0 wanda ke nufin jigon jigon (layi), da kuma NF mai sauƙin da ke riƙe da yawan filayen.

Hakanan zaka iya ƙayyade sababbin masu canji kamar yadda a wannan misali:

awk '{sum = 0; don (col = 1; col <= NF; col ++) Jimlar + = $ col; bugawa; } '

Wannan yana ƙididdigewa da buga kwafin duk abubuwan da ke cikin kowace jere.

Ana ba da izinin maganganun Awk tare da dokokin umarni .