GNU/Linux >> Znalost Linux >  >> Linux

Jak odstranit všechny prázdné znaky z textového souboru

Práce pod distribucí operačního systému Linux vám poskytuje velmi jedinečný pohled na to, jak proměnlivý může být svět počítačů. Například odstranění mezer v textových souborech může znít jako zdlouhavý úkol, pokud jako primární operační systém nepoužíváte Linux.

Bílé mezery nejsou pouze vodorovné, jako jsou mezery mezi slovy v tomto článku nebo jiné tisknutelné znaky. Bílé mezery existují také jako svislé mezery mezi řádky a/nebo odstavci. Proč tedy odstraňovat bílá místa? Primárním důvodem je dezinfekce vzhledu vašeho cíleného textového souboru.

Referenční textový soubor

Zvažte následující ukázkový textový soubor.

$ sudo nano sample_file.txt 

Podle výše uvedeného snímku obrazovky můžeme evidentně poznamenat, že textový soubor vykazuje příznaky jak vertikálních, tak horizontálních prázdných znaků. Můžeme použít příkaz cat plus -n možnost otevřít tento soubor v očíslovaném zobrazení.

$ cat -n sample_file.txt

Mezi zjevné prázdné znaky v textovém souboru patří mezery, tabulátory a zalomení řádků. Abychom odstranili všechny tyto prázdné znaky, zvážíme pomoc a použití tří vestavěných linuxových příkazů.

Metoda 1:Použití příkazu tr

příkaz tr použije výše uvedený textový soubor jako svůj vstup, přeloží obsah textového souboru, odstraní prázdné znaky a poté zapíše zpět do souboru výstup znaků bez mezer.

Musíme však poskytnout příkaz tr se specifickými požadavky na provedení, tj. zda odstranit horizontální prázdné znaky, vertikální prázdné znaky nebo obojí.

Odstranění vodorovných mezer v souboru

Použijeme "[:blank:]" znak jako součást příkazu a poté spusťte příkaz cat vytisknout konečné rozložení souboru.

$ tr -d "[:blank:]" < sample_file.txt | cat -n

Podle výše uvedeného výstupu jsme v Linuxu úspěšně odstranili vodorovné prázdné znaky z textového souboru.

Odeberte ze souboru všechny prázdné znaky

"[:space:]" Tato volba se používá k odstranění horizontálních i vertikálních prázdných znaků z textového souboru.

$ tr -d "[:space:]" < raw_file.txt | cat -n

Metoda 2:Použití příkazu sed

Protože příkaz sed je běžně implementován pomocí regulárních výrazů, můžeme jej použít následujícím způsobem:

$ sed 's/[[:blank:]]//g' sample_file.txt | cat -n               [Remove Horizontal Spaces]
$ sed ':a; N; s/[[:space:]]//g; ta' sample_file.txt | cat -n    [Remove All Spaces]

Metoda 2:Použití příkazu awk

Tento výkonný nástroj pro zpracování textu využívá svůj skript podobný C a další vestavěné funkce a proměnné k flexibilní manipulaci se zpracováním textu.

Využijeme jeho funkci gsub následujícím způsobem odstraníte horizontální prázdné znaky.

$ awk '{gsub(/[[:blank:]]/,""); print}' sample_file.txt | cat -n 

Chcete-li z textového souboru odstranit všechny prázdné znaky, provedeme ve výše uvedeném příkazu následující úpravu:

$ awk -v ORS="" '{gsub(/[[:space:]]/,""); print}' sample_file.txt | cat -n

S výše diskutovanými třemi linuxovými příkazy by odstranění nechtěných prázdných znaků v textových souborech v Linuxu nemělo být problém.


Linux
  1. Jak odstranit duplicitní slova ze souboru prostého textu pomocí příkazu linux

  2. Jak odstranit všechny adresáře .svn z adresářů mých aplikací

  3. Odstraňte liché nebo sudé řádky z textového souboru

  1. Jak odstranit duplicitní řádky uvnitř textového souboru?

  2. Jak zobrazit určité řádky z textového souboru v Linuxu?

  3. Jak odstranit neplatné znaky z názvů souborů?

  1. Jak odstranit „binární data“ z textového souboru (např. Bash_history)?

  2. Efektivně odstranit prvních pár řádků z textového souboru?

  3. Jak odstranit Bom ze souboru UTF-8?