Nasleduje niekoľko scenárov, v ktorých môže byť potrebné odstránenie medzery:
- Preformátovať zdrojový kód
- Na vyčistenie dát
- Pre zjednodušenie výstupov z príkazového riadku
Je možné ručne odstrániť biele medzery, ak ide o súbor, ktorý obsahuje iba niekoľko riadkov. Ale pre súbor obsahujúci stovky riadkov bude ťažké manuálne odstrániť všetky medzery. Na tento účel sú k dispozícii rôzne nástroje príkazového riadku, vrátane sed, awk, cut a tr. Medzi týmito nástrojmi je awk jedným z najsilnejších príkazov.
Čo je to awk?
Awk je výkonný a užitočný skriptovací jazyk používaný pri manipulácii s textom a generovaní správ. Príkaz awk je skrátený pomocou iniciálok každého z ľudí (Aho, Weinberger a Kernighan), ktorí ho vyvinuli. Awk umožňuje definovať premenné, číselné funkcie, reťazce a aritmetické operátory; vytvárať formátované správy; a viac.
Tento článok vysvetľuje použitie príkazu awk na orezávanie medzery. Po prečítaní tohto článku sa dozviete, ako používať príkaz awk na vykonanie nasledujúcich krokov:
- Orezajte všetky medzery v súbore
- Orezajte vedúce biele medzery
- Orezajte koncové biele medzery
- Orezajte úvodné aj koncové biele medzery
- Viaceré medzery nahraďte jednou medzerou
Príkazy v tomto článku boli vykonané na systéme Ubuntu 20.04 Systém Focal Fossa. Rovnaké príkazy je však možné vykonať aj v iných distribúciách Linuxu. Na spustenie príkazov v tomto článku použijeme predvolenú aplikáciu Ubuntu Terminal. Do terminálu sa dostanete pomocou klávesovej skratky Ctrl + Alt + T.
Na demonštračné účely použijeme vzorový súbor s názvom „sample.TXT.”Na vykonanie príkladov uvedených v tomto článku.
Zobraziť všetky medzery v súbore
Ak chcete zobraziť všetky medzery v súbore, prepojte výstup príkazu cat s príkazom tr, a to nasledovne:
$ vzorka mačky.txt | tr "" "*" | tr "\ t" "&"Tento príkaz nahradí všetky medzery v danom súbore znakom (*). Po zadaní tohto príkazu budete jasne vidieť, kde sú v súbore všetky biele medzery (vrátane úvodných aj koncových medzier).
Znaky * na nasledujúcej snímke obrazovky ukazujú, kde sú vo vzorovom súbore všetky biele medzery. Jeden * predstavuje jeden prázdny znak.
Orezať všetky medzery
Ak chcete zo súboru odstrániť všetky medzery, zadajte príkaz out of cat do príkazu awk nasledovne:
$ vzorka mačky.txt | awk 'gsub (/ /, ""); tlač 'Kde
- gsub (skratka pre globálnu substitúciu) je substitučná funkcia
- / / predstavujú biele miesto
- „“ nič nepredstavuje (orezanie reťazca)
Vyššie uvedený príkaz nahradí všetky medzery (/ /) ničím („“).
Na nasledujúcej snímke obrazovky vidíte, že všetky medzery vrátane úvodných a koncových medzier boli z výstupu odstránené.
Orezajte vedúce biele medzery
Ak chcete zo súboru odstrániť iba úvodné biele medzery, použite príkaz out of cat na príkaz awk nasledujúcim spôsobom:
$ vzorka mačky.txt | awk 'sub (/ ^ [\ t] + /, ""); print 'Kde
- podč je substitučná funkcia
- ^ predstavuje začiatok reťazca
- [\ t]+ predstavuje jeden alebo viac medzier
- „“ nič nepredstavuje (orezanie reťazca)
Vyššie uvedený príkaz nahradí jednu alebo viac medzier na začiatku reťazca (^ [\ t] +) ničím („“) na odstránenie úvodných medzier.
Na nasledujúcej snímke obrazovky vidíte, že z výstupu boli odstránené všetky medzery medzi riadkami.
Pomocou nasledujúceho príkazu môžete overiť, či vyššie uvedený príkaz odstránil úvodné biele medzery:
$ vzorka mačky.txt | awk 'sub (/ ^ [\ t] + /, ""); tlač '| tr "" "*" |tr "\ t" "&"
Na snímke obrazovky nižšie je jasne viditeľné, že boli odstránené iba úvodné biele medzery.
Orezať koncové medzery
Ak chcete zo súboru odstrániť iba koncové biele medzery, zadajte príkaz out of cat do príkazu awk nasledovne:
$ vzorka mačky.txt | awk 'sub (/ [\ t] + $ /, ""); print 'Kde
- podč je substitučná funkcia
- [\ t]+ predstavuje jeden alebo viac medzier
- $ predstavuje koniec reťazca
- „“ nič nepredstavuje (orezanie reťazca)
Vyššie uvedený príkaz nahradí jednu alebo viac medzier na konci reťazca ([\ t] + $) ničím („“) na odstránenie koncových medzier.
Pomocou nasledujúceho príkazu môžete overiť, či vyššie uvedený príkaz odstránil koncové medzery:
$ vzorka mačky.txt | awk 'sub (/ [\ t] + $ /, ""); tlač '| tr "" "*" | tr "\ t" "&"Na nasledujúcom obrázku je jasne viditeľné, že boli odstránené koncové biele medzery.
Orezajte vedúce aj koncové medzery
Ak chcete zo súboru odstrániť úvodné aj koncové biele medzery, zadajte príkaz out of cat do príkazu awk takto:
$ vzorka mačky.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); print 'Kde
- gsub je globálna substitučná funkcia
- ^ [\ t]+ predstavuje popredné biele miesta
- [\ t] + $ predstavuje koncové biele medzery
- „“ nič nepredstavuje (orezanie reťazca)
Vyššie uvedený príkaz nahrádza úvodnú aj koncovú medzeru (^ [\ t]+ [\ t] + $) bez nič („“) na ich odstránenie.
Ak chcete zistiť, či vyššie uvedený príkaz odstránil úvodné aj koncové biele medzery v súbore, použite nasledujúci príkaz:
$ vzorka mačky.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); tlač '|tr "" "*" | tr "\ t" "&"
Z obrázku nižšie je jasne viditeľné, že boli odstránené úvodné aj koncové biele medzery a medzi reťazcami zostali iba medzery.
Vymeňte viac priestorov za jeden priestor
Ak chcete nahradiť viac medzier jednou medzerou, zadajte príkaz out of cat do príkazu awk takto:
$ vzorka mačky.txt | awk 'gsub (/ [] + /, ""); print 'Kde:
- gsub je globálna substitučná funkcia
- []+ predstavuje jeden alebo viac prázdnych miest
- „“ predstavuje jeden biely priestor
Vyššie uvedený príkaz nahradí viac medzery ([] +) jedným prázdnym znakom („“).
Pomocou nasledujúceho príkazu môžete overiť, že vyššie uvedený príkaz nahradil viaceré medzery bielymi priestormi:
$ vzorka mačky.txt | awk 'sub (/ [\ t] + $ /, ""); tlač '| | tr "" "*" | tr "\ t" "&"V našom vzorovom súbore bolo viac medzier. Ako vidíte, vo vzorke je niekoľko medzier.Súbor txt bol nahradený jedným prázdnym miestom pomocou príkazu awk.
Ak chcete orezať biele medzery iba v tých riadkoch, ktoré obsahujú konkrétny znak, napríklad čiarku, dvojbodku alebo bodkočiarku, použite príkaz awk spolu s -F oddeľovač vstupu.
Nižšie je uvedený napríklad náš vzorový súbor, ktorý v každom riadku obsahuje medzery.
Ak chcete odstrániť medzery iba z riadkov, ktoré obsahujú čiarku (,), vykonal by tento príkaz:
$ vzorka mačky1.txt | awk -F, '/, / gsub (/ /, ""); print 'Kde (-F,) je oddeľovač vstupného poľa.
Vyššie uvedený príkaz odstráni a zobrazí iba medzery z riadkov, ktoré v nich obsahujú zadaný znak (,). Zvyšok riadkov zostane nedotknutý.
Záver
To je všetko, čo potrebujete vedieť, aby ste orezali biele medzery vo svojich údajoch pomocou príkazu awk. Odstránenie prázdnych priestorov z vašich údajov môže byť potrebné z niekoľkých rôznych dôvodov. Nech už je dôvod akýkoľvek, môžete všetky biele medzery vo svojich údajoch ľahko orezať pomocou príkazov popísaných v tomto článku. Môžete dokonca orezať úvodné alebo koncové biele medzery, orezať úvodné aj koncové biele medzery a príkazom awk nahradiť viaceré medzery jednou medzerou.