GNU/Linux >> Znalost Linux >  >> Linux

Jak spojit více řádků do jednoho v souboru v Linuxu

V dnešním tutoriálu o správě souborů v Linuxu se podíváme na platné přístupy ke spojení více řádků v souboru do jednoho řádku. Na konci tohoto článku přidáte do svých zkušeností se správou souborů v Linuxu několik počítačových milníků.

[ Také by se vám mohlo líbit:Jak spojit dva textové soubory v Linuxu ]

Možnosti/příležitosti pro uživatele využívající operační systém Linux prostřednictvím rozhraní příkazového řádku jsou i nadále nekonečné. Jednou z takových možností je manipulace s víceřádkovým souborem do jednořádkového souboru pomocí řady linuxových příkazů. Cíl pro sloučení takových řádků může být tak jednoduchý jako potřeba přidat do cílového souboru vlastní oddělovače.

Prohlášení o problému

Protože se tento tutoriál zaměří na sloučení více řádků do jednoho řádku v cílovém souboru, musíme vytvořit takový druh souboru pro referenční účely a naplnit jej několika víceřádkovými daty.

$ sudo nano sample_file.txt

Podle snímku obrazovky výše máme co do činění se souborem (sample_file.txt ) se šesti řádky a existují tři způsoby spojení těchto šesti řádků:

  1. Bez oddělovačů:Já GenuinelyLoveLinuxShellTips Tutorials!
  2. S jediným oddělovačem znaků:I Genuinely,Love,Linux.Shell,Tips,Cutorials!
  3. S několika oddělovači znaků:I Genuinely;Love;Linux;Shell;Tipy;Výukové programy!

Jak spojit více řádků do jednoho řádku v souboru

Pojďme se podívat na tyto tři přístupy ke spojení více řádků v souboru do jednoho řádku v Linuxu.

1. Pomocí příkazu sed

Síla sed obslužný program příkazového řádku pro zpracování textu nám umožní spojit šest řádků v našem ukázkovém textovém souboru tím, že se zaměří na výše uvedené tři přístupy s odkazem na téměř stejnou syntaxi kódu.

Bez oddělovačů:

$ sed ':a; N; $!ba; s/\n//g' sample_file.txt  

S mezerami:

$ sed ':a; N; $!ba; s/\n/ /g' sample_file.txt 

S jedním oddělovačem znaků, např. čárka:

$ sed ':a; N; $!ba; s/\n/,/g' sample_file.txt 

S vícenásobným oddělovačem znaků, např. středník a mezera:

$ sed ':a; N; $!ba; s/\n/; /g' sample_file.txt 

2. Pomocí příkazu awk

Linux awk command je dalším uznávaným nástrojem příkazového řádku pro zpracování textu. Jeho přístup k řešení našeho víceřádkového až jednořádkového problému lze analyzovat a implementovat následujícím způsobem:

Bez oddělovačů:

$ awk -v d="" '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

S mezerami:

$ awk -v d=" " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

S jedním oddělovačem znaků, např. čárka:

$ awk -v d="," '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

S vícenásobným oddělovačem znaků, např. středník a mezera:

$ awk -v d="; " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

3. Pomocí příkazu vložit

Vložit příkaz je ideální pouze pro spojování více řádků bez oddělovačů, s mezerami a s jedním oddělovačem znaků. Tento nástroj je umístěn pod GNU Coreutils Balíček je proto dostupný ve všech distribucích operačního systému Linux.

Bez oddělovačů:

$ paste -sd '' sample_file.txt

S mezerami:

$ paste -sd ' ' sample_file.txt

S jedním oddělovačem znaků, např. podtržítko:

$ paste -sd '_' sample_file.txt

Koncové podtržítko (_) lze odstranit převedením příkazu paste do příkazu sed:

$ paste -sd '_' sample_file.txt | sed 's/_$/\n/'

Tento přístup není ideální s více oddělovači znaků, např. středníkem a mezerou, kvůli nepravidelným výstupům, jako je následující:

$ paste -sd '; ' sample_file.txt

4. Pomocí příkazu tr

příkaz tr je také ideální pro spojování více řádků bez oddělovačů, s mezerami a s jedním oddělovačem znaků.

Bez oddělovačů:

$ tr -d '\n' < sample_file.txt

S mezerami:

$ tr '\n' ' ' < sample_file.txt

S jedním oddělovačem znaků, např. čárka:

$ tr '\n' ',' < sample_file.txt	

Výstup propojte do příkazu sed, abyste se zbavili přebytečných čárek.

$ tr '\n' ',' < sample_file.txt | sed 's/,,$/\n/'

Úspěšně jsme se naučili, jak spojit více řádků do jednoho řádku v souboru v Linuxu.


Linux
  1. Jak připojit více řádků k souboru?

  2. Jak spojit více řádků názvů souborů do jednoho s vlastním oddělovačem?

  3. Převedení více řádků do jednoho řádku odděleného čárkou

  1. Jak počítat řádky v souboru v UNIX/Linux

  2. Jak rozdělit jeden textový soubor do více souborů *.txt?

  3. Jak gzipovat více souborů do jednoho souboru gz?

  1. Jak připojit obsah více souborů do jednoho souboru

  2. Jak zakomentovat více řádků v konfiguračním souboru Linuxu?

  3. Linux – jak formátovat více souborových systémů v rámci jednoho souboru?