GNU/Linux >> Znalost Linux >  >> Linux

Jak odstranit prázdné řádky v souborech pomocí Grep, Sed a Awk

Zkušený uživatel Linuxu přesně ví, jaký druh nepříjemnosti mohou být prázdné řádky ve zpracovatelném souboru. Tyto prázdné/prázdné řádky nejenže překážejí správnému zpracování takových souborů, ale také znesnadňují běžícímu programu čtení a zápis souboru.

V prostředí operačního systému Linux je možné implementovat několik výrazů pro manipulaci s textem, abyste se zbavili těchto prázdných/prázdných řádků ze souboru. V tomto článku prázdné/prázdné řádky odkazují na mezery.

Vytvořte soubor s prázdnými/prázdnými řádky v Linuxu

Potřebujeme vytvořit referenční soubor s několika prázdnými/prázdnými řádky. Později to v článku upravíme pomocí několika technik, o kterých budeme diskutovat. Ze svého terminálu vytvořte textový soubor podle svého výběru s názvem jako „i_have_blanks ” a vyplňte jej daty a mezerami.

$ nano i_have_blanks.txt
Or
$ vi i_have_blanks.txt

V celém článku budeme zobrazovat obsah souboru na našem terminálu pomocí příkazu cat pro flexibilní odkazování.

$ cat i_have_blanks.txt

Tři linuxové příkazy, které nás poženou k ideálnímu řešení tohoto problému s prázdnými/prázdnými řádky, jsou grep, sed a awk .

Vytvořte si proto tři kopie souboru i_have_blanks.txt soubor a uložte je pod různými názvy, aby každý mohl být přizpůsoben jednomu ze tří uvedených linuxových příkazů.

Prostřednictvím regulárního výrazu (regulární výrazy ), můžeme identifikovat prázdné řádky se standardním znakem POSIX “[:space:]” .

Jak odstranit prázdné/prázdné řádky v souborech

S tímto prohlášením o problému uvažujeme o odstranění všech existujících prázdných/prázdných řádků z daného čitelného souboru pomocí následujících příkazů.

1. Odstraňte prázdné řádky pomocí příkazu Grep

Podporované použití tříd zkrácených znaků může redukovat příkaz grep na jednoduchý, jako je:

$ grep -v '^[[:space:]]*$' i_have_blanks.txt
OR
$ grep '\S' i_have_blanks.txt

Chcete-li opravit soubor s prázdnými/prázdnými řádky, výše uvedený výstup musí před přepsáním původního souboru projít dočasným souborem.

$ grep '\S' i_have_blanks.txt > tmp.txt 
$ mv tmp.txt i_have_blanks.txt
$ cat i_have_blanks.txt

Jak můžete vidět, všechny prázdné řádky, které oddělovaly obsah tohoto textového souboru, jsou pryč.

2. Odstraňte prázdné řádky pomocí příkazu Sed

d akce v příkazu říká, že má odstranit všechny existující mezery ze souboru. Mechanismus porovnávání a mazání prázdných řádků tohoto příkazu lze znázornit následujícím způsobem.

$ sed '/^[[:space:]]*$/d' i_have_blanks_too.txt

Výše uvedený příkaz vyhledá neprázdné znaky v řádcích textového souboru a odstraní všechny zbývající znaky. Díky podpoře třídy neprázdných znaků lze výše uvedený příkaz zjednodušit na následující:

$ sed '/\S/!d' i_have_blanks_too.txt

Také kvůli podpoře úprav přímo na místě nepotřebujeme dočasný soubor, který by dočasně podržel náš převedený soubor před přepsáním původního textového souboru, jako v případě příkazu grep. Musíte však použít tento příkaz s -i možnost jako argument.

$ sed -i '/\S/!d' i_have_blanks_too.txt i_have_blanks_too.txt 
$ cat i_have_blanks_too.txt

3. Odstraňte prázdné řádky pomocí příkazu Awk

Příkaz awk spustí kontrolu nebílých znaků na každém řádku souboru a vytiskne je pouze v případě, že je tato podmínka splněna. Flexibilita tohoto příkazu přichází s různými způsoby implementace. Jeho jednoduché řešení je následující:

$ awk '!/^[[:space:]]*$/' i_have_blanks_first.txt

Interpretace výše uvedeného příkazu je jednoduchá, vytisknou se pouze řádky souboru, které neexistují jako mezery. Delší verze výše uvedeného příkazu bude vypadat podobně jako následující:

$ awk '{ if($0 !~ /^[[:space:]]*$/) }' i_have_blanks_first.txt

Prostřednictvím awk podpora neprázdných znaků třídy, výše uvedený příkaz může být také reprezentován následujícím způsobem:

$ awk -d '/\S/' i_have_blanks_first.txt

-d možnost umožňuje awk vypsat poslední řádky souboru na systémový terminál. Jak vidíte, soubor již nemá mezery.

Tyto tři diskutovaly a implementovaly řešení pro řešení prázdných řádků ze souborů pomocí grep , sed a awk příkazy nás zavedou dlouhou cestu k implementaci stabilních a efektivních operací čtení a zápisu souborů v systému Linux.


Linux
  1. Jak šifrovat a dešifrovat soubory/složky v Linuxu pomocí GnuPG

  2. Jak odstranit více náhodných řádků z textového souboru pomocí Sed?

  3. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

  1. Jak používat Awk a regulární výrazy k filtrování textu nebo řetězců v souborech

  2. Jak změnit soubor na místě pomocí awk? (jako u sed -i)

  3. Jak odstranit soubory .fuse_hidden*?

  1. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

  2. Jak najít a odstranit prázdné adresáře a soubory v Unixu

  3. wget vs curl:Jak stahovat soubory pomocí wget a curl