Ako vytlačiť rozsah stĺpcov pomocou príkazu `awk`

How Print Range Columns Using Awk Command



Príkaz `awk` je jedným z mnohých príkazov, ktoré je možné použiť na tlač rozsahu stĺpcov z tabuľkových údajov v systéme Linux. Príkaz `awk` je možné použiť priamo z terminálu spustením súboru skriptu` awk`. V tomto tutoriále vám ukážeme, ako vytlačiť rozsah stĺpcov z tabuľkových údajov.

Príklad 1: Vytlačte rozsah stĺpcov z výstupu príkazu

Nasledujúci príkaz vytlačí druhý, tretí a štvrtý stĺpec z výstupu príkazu, „Ls -l ‘. Tu sú čísla stĺpcov uvedené výslovne, ale efektívnejší príkaz na tlač rovnakého rozsahu stĺpcov je uvedený v nasledujúcom príklade.







$ls -ten | awk '{print $ 2, $ 3, $ 4}'

Nasledujúci výstup je vytvorený vyššie uvedeným príkazom.





Príklad 2: Vytlačte rozsah stĺpcov zo súboru pomocou a pre slučka

Ak chcete postupovať podľa tohto príkladu a ďalších príkladov v tomto návode, vytvorte textový súbor s názvom marks.txt s nasledujúcim obsahom :





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

Nasledujúci príkaz `awk` vytlačí prvé tri stĺpce súboru marks.txt. The pre slučka sa používa na tlač hodnôt stĺpcov a slučka obsahuje tri kroky. The NF premenná udáva celkový počet polí alebo stĺpcov súboru.

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

Spustením príkazu sa vytvorí nasledujúci výstup. Výstup ukazuje študenta ID a značky pre CSE203 a CSE102 .



Príklad 3: Vytlačte rozsah stĺpcov definovaním počiatočných a koncových premenných

Nasledujúci príkaz `awk` vytlačí prvé tri stĺpce z výstupu príkazu 'ls -l' inicializáciou štartovanie a končí premenné. Tu je hodnota štartovanie premenná je 1 a hodnota končí premenná je 3. Tieto premenné sa iterujú v slučke for, aby sa vytlačili hodnoty stĺpcov.

$ls -ten | awk 'ZAČAŤ {prvý = 1; posledný = 3}
{for (i = prvý; i

Po spustení príkazu sa zobrazí nasledujúci výstup. Výstup zobrazuje prvé tri stĺpcové hodnoty výstupu „ls -l“.

Príklad 4: Vytlačte rozsah stĺpcov zo súboru s formátovaním

Nasledujúci príkaz `awk` vytlačí prvé tri stĺpce súboru marks.txt použitím printf a oddeľovač výstupného poľa ( OFS ). Tu slučka for obsahuje tri kroky a zo súboru sa vytlačia postupne tri stĺpce. OFS sa tu používa na pridanie medzery medzi stĺpcami. Keď sa hodnota počítadla slučky (i) rovná končí premenná, potom sa vygeneruje nový riadok ( n).

$katmarks.txt
$awk -v začať=1 -v koniec=3 '{for (i = štart; i<=end;i++) printf('%s%s',
$ i, (i == koniec)? ' n': OFS)} '
marks.txt

Po spustení vyššie uvedených príkazov bude vygenerovaný nasledujúci výstup.

Príklad 5: Vytlačte rozsah stĺpcov zo súboru pomocou podmieneného príkazu

Nasledujúci príkaz `awk` vytlačí prvý a posledný stĺpec zo súboru pomocou cyklu for a príkazu if. Tu slučka for obsahuje štyri kroky. The štartovanie a končí premenné sa používajú v skripte na vynechanie druhého a tretieho stĺpca zo súboru pomocou podmienky if. Premenná OFS slúži na pridanie medzery medzi stĺpce a premenná ORS slúži na pridanie nového riadka ( n) po vytlačení posledného stĺpca.

$katmarks.txt
$awk -v začať=2 -v koniec=3 '{for (i = 1; i<=NF;i++)
ak (i> = začať && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

Po spustení vyššie uvedených príkazov sa zobrazí nasledujúci výstup. Výstup ukazuje prvý a posledný stĺpec súboru marks.txt.

Príklad 6: Vytlačte rozsah stĺpcov zo súboru pomocou premennej NF

Nasledujúci príkaz `awk` vytlačí prvý a posledný stĺpec zo súboru pomocou premennej NF. Na tlač hodnôt stĺpcov sa nepoužívajú žiadne slučky ani podmienené príkazy. NF udáva počet polí. V marks.txt sú štyri stĺpce. $ (NF-3) definuje prvý stĺpec a $ NF označuje posledný stĺpec.

$katmarks.txt
$awk '{print $ (NF-3)' '$ NF}'marks.txt

Spustením vyššie uvedených príkazov získate nasledujúci výstup. Výstup zobrazuje prvý a posledný stĺpec súboru marks.txt.

Príklad 7: Vytlačte rozsah stĺpcov zo súboru pomocou substr () a index ()

Funkcia index () vráti pozíciu, ak v hodnote prvého argumentu existuje druhá hodnota argumentu. Funkcia substr () môže obsahovať tri argumenty. Prvý argument je hodnota reťazca, druhý argument je počiatočná pozícia a tretí argument je dĺžka. Tretí argument substr () je v nasledujúcom príkaze vynechaný. Pretože stĺpec začína od 1 $ v príkaze „awk“, funkcia index () vráti 3 doláre a príkaz sa vytlačí od 3 do 4 dolárov.

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

Spustením vyššie uvedených príkazov získate nasledujúci výstup.

Príklad 8: Postupne vytlačte rozsah stĺpcov zo súboru pomocou printf

Nasledujúci príkaz `awk` vytlačí prvý, druhý a tretí stĺpec marks.txt tak, že nastaví dostatok miesta na 10 znakov.

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

Spustením vyššie uvedených príkazov získate nasledujúci výstup.

Záver

Existuje niekoľko spôsobov, ako vytlačiť rozsah stĺpcov z výstupu príkazu alebo súboru. Tento tutoriál ukazuje, ako môže príkaz `awk` pomôcť používateľom Linuxu vytlačiť obsah z tabuľkových údajov.