Páni

Jak vytisknout řadu sloupců pomocí příkazu 'awk'

Jak vytisknout řadu sloupců pomocí příkazu 'awk'
Příkaz 'awk' je jedním z mnoha příkazů, které lze použít k tisku řady sloupců z tabulkových dat v systému Linux. Příkaz 'awk' lze použít přímo z terminálu spuštěním souboru skriptu 'awk'. V tomto kurzu 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, je -l''. Zde jsou čísla sloupců uvedena explicitně, ale v následujícím příkladu je uveden efektivnější příkaz pro tisk stejného rozsahu sloupců.

$ ls -l | awk 'print $ 2, $ 3, $ 4'

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

Příklad 2: Tisk rozsahu sloupců ze souboru pomocí a pro smyčka

Chcete-li sledovat tento příklad a další příklady v tomto kurzu, vytvořte textový soubor s názvem známky.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 značek.txt. The pro smyčka se používá k tisku hodnot sloupce a smyčka zahrnuje tři kroky. The NF proměnná udává celkový počet polí nebo sloupců souboru.

$ kočičí značky.txt
$ awk 'pro (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: Tisk rozsahu 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é jsou iterovány ve smyčce for pro tisk hodnot sloupců.

$ ls -l | awk 'BEGIN první = 1; poslední = 3
for (i = první; i < last; i++) printf("%s ", $i) print $last '

Po spuštění příkazu se zobrazí následující výstup. Výstup zobrazuje první tři hodnoty sloupce výstupu, 'ls -l'.

Příklad 4: Tisk řady sloupců ze souboru s formátováním

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

$ kočičí značky.txt
$ awk -v start = 1 -v konec = 3 'pro (i = start; i<=end;i++) printf("%s%s",
$ i, (i == konec) ? "\ n": OFS) '.txt

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

Příklad 5: Tisk rozsahu sloupců ze souboru pomocí podmíněného příkazu

Následující příkaz 'awk' vytiskne první a poslední sloupec ze souboru pomocí smyčky for a if. Zde smyčka for zahrnuje č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 se používá k přidání prostoru mezi sloupce a proměnná ORS se používá k přidání nového řádku (\ n) po vytištění posledního sloupce.

$ kočičí značky.txt
$ awk -v start = 2 -v konec = 3 'pro (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ("% s% s", $ i, (i!= NF) ? OFS: ORS) '.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 značek.txt.

Příklad 6: Tisk rozsahu 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 označuje počet polí. Ve značkách jsou čtyři sloupce.txt. $ (NF-3) definuje první sloupec a $ NF označuje poslední sloupec.

$ kočičí značky.txt
$ awk 'print $ (NF-3) "" $ NF' značky.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 značek.txt.

Příklad 7: Tisk rozsahu sloupců ze souboru pomocí substr () a index ()

Funkce index () vrací pozici, pokud druhá hodnota argumentu existuje v první hodnotě argumentu. Funkce substr () může trvat tři argumenty. První argument je hodnota řetězce, druhý argument je výchozí 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á v příkazu 'awk' od $ 1, funkce index () vrátí $ 3 a příkaz bude tisknout od $ 3 do $ 4.

$ kočičí značky.txt
Značky $ awk 'print substr ($ 0, index ($ 0, $ 3))'.txt

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

Příklad 8: Sekvenční tisk řady sloupců ze souboru pomocí printf

Následující příkaz 'awk' vytiskne první, druhý a třetí sloupec značek.txt nastavením dostatečného prostoru pro 10 znaků.

$ kočičí značky.txt
$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' známky.txt

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

Závěr

Existuje několik způsobů, jak vytisknout rozsah sloupců z výstupu příkazu nebo souboru. Tento výukový program ukazuje, jak může příkaz 'awk' pomoci uživatelům systému Linux tisknout obsah z tabulkových dat.

WinMouse vám umožňuje přizpůsobit a vylepšit pohyb ukazatele myši na PC s Windows
Chcete-li vylepšit výchozí funkce ukazatele myši, použijte freeware WinMouse. Přidává další funkce, které vám pomohou vytěžit ze své skromné ​​myši ma...
V systému Windows 10 nefunguje levé tlačítko myši
Pokud používáte speciální myš s notebookem nebo stolním počítačem, ale levé tlačítko myši nefunguje ve Windows 10/8/7 z nějakého důvodu uvádíme několi...
Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...