Kako natisniti vrsto stolpcev z ukazom `awk`

How Print Range Columns Using Awk Command



Ukaz `awk` je eden od mnogih ukazov, ki jih lahko uporabite za tiskanje vrste stolpcev iz tabelarnih podatkov v Linuxu. Ukaz `awk` lahko uporabite neposredno iz terminala z izvajanjem skriptne datoteke` awk`. V tej vadnici vam bomo pokazali, kako natisniti vrsto stolpcev iz tabelarnih podatkov.

Primer 1: Natisnite obseg stolpcev iz izpisa ukaza

Naslednji ukaz bo natisnil drugi, tretji in četrti stolpec iz izpisa ukaza, 'Ls -l ‘. Tu so številke stolpcev izrecno navedene, vendar je v naslednjem primeru prikazan učinkovitejši ukaz za tiskanje istega obsega stolpcev.







$ls - | awk '{natisnite 2 USD, 3 USD, 4 USD $' '

Naslednji izhod ustvari zgornji ukaz.





Primer 2: Natisnite obseg stolpcev iz datoteke z uporabo za zanka

Če želite slediti temu primeru in drugim primerom v tej vadnici, ustvarite besedilno datoteko z imenom marks.txt z naslednjo vsebino :





ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Naslednji ukaz `awk` bo natisnil prve tri stolpce marks.txt. The za zanka se uporablja za tiskanje vrednosti stolpca, zanka pa vključuje tri korake. The NF spremenljivka označuje skupno število polj ali stolpcev datoteke.

$mačkamarks.txt
$awk '{for (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

Naslednji izhod bo izdelan z izvajanjem ukaza. Rezultat prikazuje študenta Osebne izkaznice in oznake za CSE203 in CSE102 .



Primer 3: Natisnite obseg stolpcev tako, da določite začetne in končne spremenljivke

Naslednji ukaz `awk` bo natisnil prve tri stolpce iz ukaza' ls -l 'z inicializacijo začetek in zaključek spremenljivke. Tu je vrednost začetek spremenljivka je 1, vrednost zaključek spremenljivka je 3. Te spremenljivke se ponavljajo v zanki for za tiskanje vrednosti stolpca.

$ls - | awk 'BEGIN {first = 1; zadnja = 3}
{for (i = prvi; i

Po zagonu ukaza se prikaže naslednji izhod. Izhod prikazuje prve tri vrednosti stolpcev izhoda, 'ls -l'.

Primer 4: Natisnite obseg stolpcev iz datoteke z oblikovanjem

Naslednji ukaz `awk` bo natisnil prve tri stolpce marks.txt z uporabo printf in ločevalnik izhodnega polja ( OFS ). Tukaj zanka for vključuje tri korake in trije stolpci bodo natisnjeni v zaporedju iz datoteke. OFS se tukaj uporablja za dodajanje prostora med stolpci. Ko je vrednost števca zanke (i) enaka zaključek spremenljivko, nato se ustvari nova vrstica ( n).

$mačkamarks.txt
$awk -v začetek=1 -v konec=3 '{for (i = začetek; i<=end;i++) printf('%s%s',
$ i, (i == konec)? ' n': OFS)} '
marks.txt

Naslednji izhod bo ustvarjen po zagonu zgornjih ukazov.

Primer 5: Natisnite obseg stolpcev iz datoteke z uporabo pogojnega stavka

Naslednji ukaz `awk` bo natisnil prvi in ​​zadnji stolpec iz datoteke z uporabo zanke for in stavka if. Tu zanka for vključuje štiri korake. The začetek in zaključek spremenljivke se v skriptu uporabljajo za izpustitev drugega in tretjega stolpca iz datoteke z uporabo pogoja if. Spremenljivka OFS se uporablja za dodajanje prostora med stolpci, spremenljivka ORS pa za dodajanje nove vrstice ( n) po tiskanju zadnjega stolpca.

$mačkamarks.txt
$awk -v začetek=2 -v konec=3 '{for (i = 1; i<=NF;i++)
če (i> = začni && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

Po zagonu zgornjih ukazov se prikaže naslednji izhod. Izhod prikazuje prvi in ​​zadnji stolpec marks.txt.

Primer 6: Natisnite obseg stolpcev iz datoteke s spremenljivko NF

Naslednji ukaz `awk` bo natisnil prvi in ​​zadnji stolpec iz datoteke z uporabo spremenljivke NF. Za tiskanje vrednosti stolpca se ne uporabljajo zanke ali pogojni stavki. NF označuje število polj. V marks.txt so štirje stolpci. $ (NF-3) definira prvi stolpec, $ NF pa zadnji stolpec.

$mačkamarks.txt
$awk '{print $ (NF-3)' '$ NF}'marks.txt

Naslednji izhod se ustvari z izvajanjem zgornjih ukazov. Izhod prikazuje prvi in ​​zadnji stolpec marks.txt.

Primer 7: Natisnite obseg stolpcev iz datoteke z uporabo substr () in index ()

Funkcija index () vrne položaj, če vrednost drugega argumenta obstaja v vrednosti prvega argumenta. Funkcija substr () lahko sprejme tri argumente. Prvi argument je vrednost niza, drugi argument je začetni položaj, tretji argument pa je dolžina. Tretji argument substr () je v naslednjem ukazu izpuščen. Ker se stolpec začne pri $ 1 v ukazu `awk`, bo funkcija index () vrnila $ 3, ukaz pa bo natisnil od $ 3 do $ 4.

$mačkamarks.txt
$awk '{print substr ($ 0, index ($ 0, $ 3))}' 'marks.txt

Naslednji izhod bo izdelan z izvajanjem zgornjih ukazov.

Primer 8: Zaporedno natisnite obseg stolpcev iz datoteke z uporabo printf

Naslednji ukaz awk natisne prvi, drugi in tretji stolpec marks.txt tako, da nastavi dovolj prostora za 10 znakov.

$mačkamarks.txt
$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'marks.txt

Naslednji izhod bo izdelan z izvajanjem zgornjih ukazov.

Zaključek

Razpon stolpcev lahko natisnete iz izhoda ukaza ali datoteke. Ta vadnica prikazuje, kako lahko z ukazom awk uporabniki Linuxa natisnejo vsebino iz tabelarnih podatkov.