Jak vytisknout rozsah sloupců pomocí příkazu `awk`

How Print Range Columns Using Awk Command

Příkaz `awk` je jedním z mnoha příkazů, které lze použít k tisku řady sloupců z tabulkových dat v Linuxu. Příkaz `awk` lze použít přímo z terminálu spuštěním souboru skriptu` awk`. V tomto tutoriálu vám ukážeme, jak vytisknout řadu sloupců z tabulkových dat.

Příklad 1: Tisk rozsahu sloupců z výstupu příkazu

Následující příkaz vytiskne druhý, třetí a čtvrtý sloupec z výstupu příkazu, „Ls -l ‘. Zde jsou čísla sloupců uvedena explicitně, ale v dalším příkladu je ukázán efektivnější příkaz pro tisk stejného rozsahu sloupců.



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

Následující výstup je produkován výše uvedeným příkazem.





Příklad 2: Vytiskněte rozsah sloupců ze souboru pomocí pro smyčka

Chcete -li sledovat tento příklad a další příklady v tomto kurzu, vytvořte textový soubor s názvem marks.txt s následujícím obsahem :

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

Následující příkaz `awk` vytiskne první tři sloupce souboru marks.txt. The pro smyčka se používá k tisku hodnot sloupců a smyčka obsahuje tři kroky. The NF proměnná udává celkový počet polí nebo sloupců souboru.

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

Následující výstup bude vytvořen spuštěním příkazu. Výstup ukazuje studenta ID a značky pro CSE203 a CSE102 .



Příklad 3: Vytiskněte rozsah sloupců definováním počátečních a koncových proměnných

Následující příkaz `awk` vytiskne první tři sloupce z výstupu příkazu 'ls -l' inicializací začínající a konec proměnné. Zde je hodnota začínající proměnná je 1 a hodnota konec proměnná je 3. Tyto proměnné se iterují ve smyčce for, aby se vytiskly hodnoty sloupců.

$ls -ten | awk 'ZAČÍT {první = 1; poslední = 3}
{for (i = první; i

Po spuštění příkazu se zobrazí následující výstup. Výstup ukazuje první tři sloupcové hodnoty výstupu „ls -l“.

Příklad 4: Vytiskněte rozsah sloupců ze souboru s formátováním

Následující příkaz `awk` vytiskne první tři sloupce marks.txt použitím printf a oddělovač výstupního pole ( OFS ). Zde smyčka for obsahuje tři kroky a ze souboru se vytisknou postupně tři sloupce. OFS Zde se používá k přidání mezery mezi sloupce. Když se hodnota čítače smyčky (i) rovná konec proměnnou, pak se vygeneruje nový řádek ( n).

$kočkamarks.txt
$awk -proti Start=1 -proti konec=3 '{for (i = start; i<=end;i++) printf('%s%s',
$ i, (i == konec)? ' n': OFS)} '
marks.txt

Po spuštění výše uvedených příkazů bude vygenerován následující výstup.

Příklad 5: Vytiskněte rozsah sloupců ze souboru pomocí podmíněného příkazu

Následující příkaz `awk` vytiskne první a poslední sloupec ze souboru pomocí cyklu for a příkazu if. Zde smyčka for obsahuje čtyři kroky. The začínající a konec proměnné se ve skriptu používají k vynechání druhého a třetího sloupce ze souboru pomocí podmínky if. Proměnná OFS slouží k přidání mezery mezi sloupce a proměnná ORS slouží k přidání nového řádku ( n) po vytištění posledního sloupce.

$kočkamarks.txt
$awk -proti Start=2 -proti konec=3 '{for (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ('%s%s', $ i, (i! = NF)? OFS: ORS)} '
marks.txt

Po spuštění výše uvedených příkazů se zobrazí následující výstup. Výstup zobrazuje první a poslední sloupec souboru marks.txt.

Příklad 6: Vytiskněte rozsah sloupců ze souboru pomocí proměnné NF

Následující příkaz `awk` vytiskne první a poslední sloupec ze souboru pomocí proměnné NF. K tisku hodnot sloupců se nepoužívají žádné smyčky ani podmíněné příkazy. NF udává počet polí. V marks.txt jsou čtyři sloupce. $ (NF-3) definuje první sloupec a $ NF označuje poslední sloupec.

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

Následující výstup je vytvořen spuštěním výše uvedených příkazů. Výstup zobrazuje první a poslední sloupec souboru marks.txt.

Příklad 7: Vytiskněte rozsah sloupců ze souboru pomocí substr () a index ()

Funkce index () vrací pozici, pokud v hodnotě prvního argumentu existuje hodnota druhého argumentu. Funkce substr () může mít tři argumenty. První argument je hodnota řetězce, druhý argument je počáteční pozice a třetí argument je délka. Třetí argument substr () je v následujícím příkazu vynechán. Protože sloupec začíná od $ 1 v příkazu `awk`, funkce index () vrátí $ 3 a příkaz vytiskne od $ 3 do $ 4.

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

Následující výstup bude vytvořen spuštěním výše uvedených příkazů.

Příklad 8: Postupně vytiskněte rozsah sloupců ze souboru pomocí printf

Následující příkaz `awk` vytiskne první, druhý a třetí sloupec souboru marks.txt nastavením dostatečného prostoru na 10 znaků.

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

Následující výstup bude vytvořen spuštěním výše uvedených příkazů.

Závěr

Existují různé způsoby, jak vytisknout rozsah sloupců z výstupu příkazu nebo souboru. Tento tutoriál ukazuje, jak může příkaz `awk` pomoci uživatelům Linuxu tisknout obsah z tabulkových dat.