Páni

Awk Trim Mezery

Awk Trim Mezery
Jako programátor možná budete muset pro ukládání a manipulaci s daty pracovat s různými soubory. Jeden základní úkol manipulace se soubory zahrnuje odstranění mezer v souborech. Bílé mezery se skládají z mezer, prázdných řádků, nbsp a karet. Programátoři často potřebují odstranit mezery, aby se ukládala pouze nezbytná data a bylo možné eliminovat zbytečné mezery. Mezery mohou být buď na začátku řádku (na začátku řádku), nebo na konci řádku na konci řádku.

Následuje několik scénářů, ve kterých může být nutné odebrání mezer:

Je možné odstranit mezery ručně, pokud soubor obsahuje pouze několik řádků. U souboru obsahujícího stovky řádků však bude obtížné ručně odstranit všechny prázdné znaky. K tomuto účelu jsou k dispozici různé nástroje příkazového řádku, včetně sed, awk, cut a tr. Mezi těmito nástroji je awk jedním z nejsilnějších příkazů.

Co je to awk?

Awk je výkonný a užitečný skriptovací jazyk používaný při manipulaci s textem a generování zpráv. Příkaz awk je zkrácen pomocí iniciál každého z lidí (Aho, Weinberger a Kernighan), kteří jej vyvinuli. Awk umožňuje definovat proměnné, číselné funkce, řetězce a aritmetické operátory; vytvářet formátované zprávy; a více.

Tento článek vysvětluje použití příkazu awk pro ořezávání mezer. Po přečtení tohoto článku se naučíte, jak pomocí příkazu awk provádět následující:

Příkazy v tomto článku byly provedeny na systému Ubuntu 20.04 Systém Focal Fossa. Stejné příkazy však lze provádět i na jiných distribucích Linuxu. Ke spuštění příkazů v tomto článku použijeme výchozí aplikaci Terminál Ubuntu. K terminálu se dostanete pomocí klávesové zkratky Ctrl + Alt + T.

Pro demonstrační účely použijeme ukázkový soubor s názvem „sample“.txt.“K provedení příkladů uvedených v tomto článku.

Zobrazit všechny mezery v souboru

Chcete-li zobrazit všechny mezery v souboru, přepněte výstup příkazu cat do příkazu tr, a to následujícím způsobem:

$ vzorek kočky.txt | tr "" "*" | tr "\ t" "&"

Tento příkaz nahradí všechny mezery v daném souboru znakem (*). Po zadání tohoto příkazu budete jasně vidět, kde jsou v souboru všechny bílé mezery (včetně úvodních i koncových mezer).

Znaky * na následujícím snímku obrazovky ukazují, kde jsou v ukázkovém souboru všechny mezery. Jeden * představuje jeden prázdný znak.

Ořízněte všechny prázdné znaky

Chcete-li ze souboru odebrat všechny prázdné znaky, zadejte příkaz out of cat do příkazu awk následujícím způsobem:

$ vzorek kočky.txt | awk 'gsub (/ /, ""); tisk '

Kde

Výše uvedený příkaz nahradí všechny mezery (/ /) ničím („“).

Na následujícím snímku obrazovky vidíte, že z výstupu byly odebrány všechny mezery, včetně počátečních a koncových mezer.

Ořízněte přední mezery

Chcete-li ze souboru odebrat pouze úvodní mezery, zadejte příkaz out of cat do příkazu awk následujícím způsobem:

$ vzorek kočky.txt | awk 'sub (/ ^ [\ t] + /, ""); tisk '

Kde

Výše uvedený příkaz nahradí jednu nebo více mezer na začátku řetězce (^ [\ t] +) ničím („“), aby odstranil úvodní mezery.

Na následujícím snímku obrazovky vidíte, že z výstupu byly odebrány všechny mezery bílé.

Pomocí následujícího příkazu můžete ověřit, že výše uvedený příkaz odstranil úvodní prázdné znaky:

$ vzorek kočky.txt | awk 'sub (/ ^ [\ t] + /, ""); tisk '| tr "" "*" |
tr "\ t" "&"

Na níže uvedeném snímku obrazovky je jasně vidět, že byly odstraněny pouze přední bílé mezery.

Oříznout koncové mezery

Chcete-li ze souboru odebrat pouze koncové mezery, zadejte příkaz out of cat do příkazu awk následujícím způsobem:

$ vzorek kočky.txt | awk 'sub (/ [\ t] + $ /, ""); tisk '

Kde

Výše uvedený příkaz nahradí jednu nebo více mezer na konci řetězce ([\ t] + $) ničím („“), aby odstranil koncové mezery.

Pomocí následujícího příkazu můžete ověřit, že výše uvedený příkaz odstranil koncové mezery:

$ vzorek kočky.txt | awk 'sub (/ [\ t] + $ /, ""); tisk '| tr "" "*" | tr "\ t" "&"

Z níže uvedeného snímku obrazovky je jasně vidět, že byly odstraněny koncové mezery.

Ořízněte přední i koncové mezery

Chcete-li ze souboru odebrat úvodní i koncové mezery, zadejte příkaz out of cat do příkazu awk následujícím způsobem:

$ vzorek kočky.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); tisk '

Kde

Výše uvedený příkaz nahradí přední i zadní mezeru (^ [\ t]+ [\ t] + $) a nic („“) k jejich odstranění.

Chcete-li zjistit, zda výše uvedený příkaz odstranil úvodní i koncové mezery v souboru, použijte následující příkaz:

$ vzorek kočky.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); tisk '|
tr "" "*" | tr "\ t" "&"

Z níže uvedeného snímku obrazovky je jasně viditelné, že byly odstraněny jak přední, tak i zadní mezery a mezi řetězci zůstanou pouze mezery.

Nahraďte více prostorů jedním prostorem

Chcete-li nahradit více mezer jednou mezerou, zadejte příkaz out of cat do příkazu awk následujícím způsobem:

$ vzorek kočky.txt | awk 'gsub (/ [] + /, ""); tisk '

Kde:

Výše uvedený příkaz nahradí více mezer ([] +) jedním prázdným znakem („“).

Pomocí následujícího příkazu můžete ověřit, že výše uvedený příkaz nahradil více mezer mezerami:

$ vzorek kočky.txt | awk 'sub (/ [\ t] + $ /, ""); tisk '| | tr "" "*" | tr "\ t" "&"

V našem ukázkovém souboru bylo více mezer. Jak vidíte, více mezer v ukázce.Soubor txt byl nahrazen jedním prázdným místem pomocí příkazu awk.

Chcete-li ořezat mezery pouze v těch řádcích, které obsahují konkrétní znak, například čárku, dvojtečku nebo středník, použijte příkaz awk s -F oddělovač vstupu.

Například níže je ukázkový náš soubor, který obsahuje mezery v každém řádku.

Chcete-li odstranit prázdné znaky pouze z řádků, které obsahují čárku (,), bude příkaz vypadat takto:

$ kočka vzorek 1.txt | awk -F, '/, / gsub (/ /, ""); tisk'

Kde (-F,) je oddělovač vstupního pole.

Výše uvedený příkaz odstraní a zobrazí pouze mezery z řádků, které v nich obsahují zadaný znak (,). Zbytek řádků zůstane nedotčen.

Závěr

To je vše, co potřebujete vědět, abyste ořízli mezery ve svých datech pomocí příkazu awk. Odebrání mezer z vašich dat může být nutné z několika různých důvodů. Ať už je důvod jakýkoli, můžete všechny bílé mezery ve svých datech snadno oříznout pomocí příkazů popsaných v tomto článku. Můžete dokonce oříznout mezery na začátku nebo na konci, oříznout mezery na začátku i na konci a nahradit více mezer jedním mezerou pomocí příkazu awk.

Hry Nejlepší emulátory herních konzolí pro Linux
Nejlepší emulátory herních konzolí pro Linux
Tento článek uvádí seznam populárního softwaru pro emulaci herních konzolí, který je k dispozici pro Linux. Emulace je vrstva softwarové kompatibility...
Hry Nejlepší linuxové distribuce pro hraní her v roce 2021
Nejlepší linuxové distribuce pro hraní her v roce 2021
Operační systém Linux má za sebou dlouhou cestu od svého původního, jednoduchého vzhledu založeného na serveru. Tento OS se v posledních letech nesmír...
Hry Jak zachytit a streamovat vaši herní relaci v systému Linux
Jak zachytit a streamovat vaši herní relaci v systému Linux
V minulosti bylo hraní her považováno pouze za koníček, ale postupem času došlo v herním průmyslu k obrovskému nárůstu z hlediska technologie a počtu ...