GNU/Linux >> Znalost Linux >  >> Linux

Linux – Rozdělit jeden řádek na více řádků, znak nového řádku chybí ve všech řádcích ve vstupním souboru?

Tato otázka zde již obsahuje odpovědi :Jak zpracovat textový soubor s více sloupci, abyste získali další textový soubor s více sloupci?

(7 odpovědí)
Uzavřeno před 3 lety.

Mám způsob, jak rozdělit jeden řádek na více řádků se 3 sloupci.
Na konci všech řádků v souboru chybí znaky nového řádku.

Zkoušel jsem použít awk, ale rozděluje každý sloupec jako jeden řádek namísto 3 sloupců v každém řádku.

awk '{ gsub(",", "n") } 6' filename

kde filename obsah vypadá takto:

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O

Požadovaný výstup má 3 sloupce v každém řádku:

A,B,C
D,E,F
G,H,I
J,K,L
M,N,O

Přijatá odpověď:

Pomocí awk

$ awk -v RS='[,n]' '{a=$0;getline b; getline c; print a,b,c}' OFS=, filename
A,B,C
D,E,F
G,H,I
J,K,L
M,N,O

Jak to funguje

  • -v RS='[,n]'

    To říká awk, aby jako oddělovač záznamů použil jakýkoli výskyt čárky nebo nového řádku.

  • a=$0; getline b; getline c

    To říká awk, aby uložil aktuální řádek do proměnné a , další řádek v proměnné b a další řádek za tím v proměnné c .

  • print a,b,c

    To říká awk, aby vytiskl a , b a c

  • OFS=,

    To říká awk, aby použil čárku jako oddělovač polí na výstupu.

Pomocí tr a paste

$ tr , 'n' <filename | paste -d, - - -
A,B,C
D,E,F
G,H,I
J,K,L
M,N,O

Jak to funguje

  • tr , 'n' <filename

    Toto čte z názvu souboru a zároveň převádí všechny čárky na nové řádky.

  • paste -d, - - -

    Toto paste pro přečtení tří řádků ze stdin (jeden pro každý - ) a vložte je dohromady, každý oddělený čárkou (-d, ).

Alternativní awk

$ awk -v RS='[,n]' '{printf "%s%s",$0,(NR%3?",":"n")}' filename
A,B,C
D,E,F
G,H,I
J,K,L
M,N,O

Jak to funguje

  • -v RS='[,n]'

    To říká awk, aby jako oddělovač záznamů použil jakýkoli výskyt čárky nebo nového řádku.

  • printf "%s%s",$0,(NR%3?",":"n")

    To říká awk, aby vytiskl aktuální řádek následovaný čárkou nebo novým řádkem v závislosti na hodnotě aktuálního čísla řádku, NR , modul 3.


Linux
  1. Odebrat další řádky záhlaví ze souboru, kromě prvního řádku?

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

  3. Popsicle – Multiple USB File Flasher pro Linux

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

  2. Linux - zkontrolujte, zda na konci souboru není prázdný řádek

  3. Linux - grep od určitých řádků až do konce souboru

  1. 8 tipů pro příkazový řádek Linuxu

  2. Jak rozdělit jeden soubor do více souborů na základě řádků

  3. 9 Užitečné příklady příkazu Split v Linuxu