Paano mag-print ng isang hanay ng mga haligi gamit ang 'awk` na utos

How Print Range Columns Using Awk Command



Ang utos ng `awk` ay isa sa maraming mga utos na maaaring magamit upang mai-print ang isang hanay ng mga haligi mula sa tabular data sa Linux. Ang utos na `awk` ay maaaring magamit nang direkta mula sa terminal sa pamamagitan ng pagpapatupad ng` awk` script file. Sa tutorial na ito, ipapakita namin sa iyo kung paano mag-print ng isang hanay ng mga haligi mula sa tabular data.

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.