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.