Halimbawa 1: Mag-print ng isang hanay ng mga haligi mula sa isang output output
Ang sumusunod na utos ay mai-print ang pangalawa, pangatlo, at pang-apat na mga haligi mula sa output ng utos, 'Ls -l ‘. Dito, malinaw na nakasaad ang mga numero ng haligi, ngunit ang isang mas mahusay na utos para sa pag-print ng parehong saklaw ng mga haligi ay ipinapakita sa susunod na halimbawa.
$ls -ang | ang awkward '{print $ 2, $ 3, $ 4}'
Ang sumusunod na output ay ginawa ng utos sa itaas.
Halimbawa 2: I-print ang hanay ng mga haligi mula sa isang file sa pamamagitan ng paggamit ng a para sa loop
Upang sundin kasama ang halimbawang ito at ang iba pang mga halimbawa sa tutorial na ito, lumikha ng isang text file na pinangalanan marks.txt kasama ang sumusunod na nilalaman :
ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58
Ang sumusunod na utos na `awk` ay mag-print ng unang tatlong mga haligi ng marks.txt. Ang para sa ginagamit ang loop upang mai-print ang mga haligi ng haligi, at ang loop ay may kasamang tatlong mga hakbang. Ang NF ipinapahiwatig ng variable ang kabuuang bilang ng mga patlang o haligi ng file.
$pusamarks.txt$ang awkward '{para sa (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt
Ang sumusunod na output ay gagawin sa pamamagitan ng pagpapatakbo ng utos. Ipinapakita ng output ang mag-aaral Mga ID at ang mga marka para sa CSE203 at CSE102 .
Halimbawa 3: I-print ang hanay ng mga haligi sa pamamagitan ng pagtukoy sa mga nagsisimula at nagtatapos na mga variable
Ang sumusunod na command na 'awk` ay mag-print ng unang tatlong mga haligi mula sa output output ng 'ls -l' sa pamamagitan ng pagsisimula ng nagsisimula na at nagtatapos variable. Dito, ang halaga ng nagsisimula na ang variable ay 1, at ang halaga ng nagtatapos variable ay 3. Ang mga variable na ito ay inuulit sa isang para sa loop upang mai-print ang mga haligi ng haligi.
$ls -ang | ang awkward 'MAGSIMULA sa {una = 1; huling = 3}{para sa (i = una; i
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos. Ipinapakita ng output ang unang tatlong halagang haligi ng output, 'ls -l'.
Halimbawa 4: I-print ang isang hanay ng mga haligi mula sa isang file na may formatting
Ang sumusunod na 'awk` na utos ay mai-print ang unang tatlong mga haligi ng marks.txt gamit printf at maghihiwalay ng patlang ng output ( OFS ). Dito, ang para sa loop ay may kasamang tatlong mga hakbang, at tatlong mga haligi ang mai-print nang magkakasunod mula sa file. OFS ay ginagamit dito upang magdagdag ng puwang sa pagitan ng mga haligi. Kapag ang counter halaga ng loop (i) ay katumbas ng nagtatapos variable, pagkatapos ay nabuo ang isang bagong linya ( n).
$pusamarks.txt$ang awkward -v umpisahan=1 -v magtapos=3 '{para sa (i = start; i<=end;i++) printf('%s%s',
$ i, (i == pagtatapos)? ' n': OFS)} 'marks.txt
Ang sumusunod na output ay malilikha pagkatapos patakbuhin ang mga utos sa itaas.
Halimbawa 5: I-print ang hanay ng mga haligi mula sa isang file gamit ang isang kondisyong pahayag
Ang sumusunod na 'awk` na utos ay mai-print ang una at huling mga haligi mula sa isang file sa pamamagitan ng paggamit ng isang para sa loop at isang kung pahayag. Dito, ang para sa loop ay may kasamang apat na mga hakbang. Ang nagsisimula na at nagtatapos ginagamit ang mga variable sa script upang alisin ang pangalawa at pangatlong mga haligi mula sa file sa pamamagitan ng paggamit ng kondisyong kung. Ginagamit ang variable ng OFS upang magdagdag ng puwang sa pagitan ng mga haligi, at ang variable ng ORS ay ginagamit upang magdagdag ng isang bagong linya ( n) pagkatapos i-print ang huling haligi.
$pusamarks.txt$ang awkward -v umpisahan=2 -v magtapos=3 '{para sa (i = 1; i<=NF;i++)
kung (i> = start && i<=end) continue;
iba pa printf ('% s% s', $ i, (i! = NF)? OFS: ORS)} 'marks.txt
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Ipinapakita ng output ang una at huling haligi ng mga marks.txt.
Halimbawa 6: I-print ang hanay ng mga haligi mula sa isang file gamit ang variable na NF
Ang sumusunod na 'awk` na utos ay mai-print ang una at huling mga haligi mula sa file sa pamamagitan ng paggamit ng isang variable na NF. Walang mga loop o kondisyon na pahayag ang ginagamit upang mai-print ang mga halagang haligi. Ipinapahiwatig ng NF ang bilang ng mga patlang. Mayroong apat na mga haligi sa mga marka.txt. Tinutukoy ng $ (NF-3) ang unang haligi, at ipinahiwatig ng $ NF ang huling haligi.
$pusamarks.txt$ang awkward '{print $ (NF-3)' '$ NF}'marks.txt
Ang sumusunod na output ay ginawa sa pamamagitan ng pagpapatakbo ng mga utos sa itaas. Ipinapakita ng output ang una at huling haligi ng mga marks.txt.
Halimbawa 7: I-print ang saklaw ng mga haligi mula sa isang file gamit ang substr () at index ()
Ang index () na function ay nagbabalik ng isang posisyon kung ang pangalawang halaga ng argument ay umiiral sa unang halaga ng argument. Ang pagpapaandar ng substr () ay maaaring tumagal ng tatlong mga argumento. Ang unang argument ay isang halaga ng string, ang pangalawang argumento ay ang panimulang posisyon, at ang pangatlong argument ay ang haba. Ang pangatlong argumento ng substr () ay tinanggal sa sumusunod na utos. Dahil ang haligi ay nagsisimula mula $ 1 sa utos ng `awk`, ibabalik ng pagpapaandar ng index () ang $ 3, at mai-print ang utos mula $ 3 hanggang $ 4.
$pusamarks.txt$ang awkward '{print substr ($ 0, index ($ 0, $ 3))}'marks.txt
Ang sumusunod na output ay gagawin sa pamamagitan ng pagpapatakbo ng mga utos sa itaas.
Halimbawa 8: sunud-sunod na pag-print ng isang hanay ng mga haligi mula sa isang file gamit ang printf
Ang sumusunod na utos na `awk` ay mai-print ang una, pangalawa, at pangatlong haligi ng mga marka.txt sa pamamagitan ng pagtatakda ng sapat na puwang para sa 10 mga character.
$pusamarks.txt$ang awkward '// {printf'% 10s% 10s% 10s n ', $ 1, $ 3, $ 2}'marks.txt
Ang sumusunod na output ay gagawin sa pamamagitan ng pagpapatakbo ng mga utos sa itaas.
Konklusyon
Mayroong iba't ibang mga paraan upang mai-print ang saklaw ng mga haligi mula sa output ng utos o isang file. Ipinapakita ng tutorial na ito kung paano makakatulong ang command na 'awk` sa mga gumagamit ng Linux na mag-print ng nilalaman mula sa tabular data.