Portál AbcLinuxu, 12. května 2025 07:37

Dotaz: Transformace textoveho souboru

8.11.2012 12:00 xmanin00
Transformace textoveho souboru
Přečteno: 248×
Odpovědět | Admin
Dobry den, mam soubor v nasledujicim tvaru:
jmeno:      Jan
prijmeni:   Novak
jmeno:      Karel
prijmeni:   Antl
Jak ho pomoci command line utilit mohu zmenit na:
Jan:Novak
Karel:Antl
Dekuji

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.11.2012 12:28 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Transformace textoveho souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
V rychlosti něco jako:
sed -n -e "/jmeno/{N;s/jmeno:\s\+\(.*\)\nprijmeni:\s\+\(.*\)/\1:\2/p}" soubor.txt > novysoubor.txt
8.11.2012 16:41 d.c. | skóre: 30
Rozbalit Rozbalit vše Re: Transformace textoveho souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nebo pomocí awku: awk '{print $1$2}' cesta_k_puvodnimu_souboru > cesta_k_upravenemu_souboru. Samozřejmě to funguje též jako filtr.
pepe_ avatar 8.11.2012 16:48 pepe_ | skóre: 48
Rozbalit Rozbalit vše Re: Transformace textoveho souboru

On nechtěl tento výsledek :

jmeno:Jan
prijmeni:Novak
jmeno:Karel
prijmeni:Antl

ale

Jan:Novak
Karel:Antl

8.11.2012 20:55 d.c. | skóre: 30
Rozbalit Rozbalit vše Re: Transformace textoveho souboru
Omlouvam se. Asi uz jsem vykojenej. ;-)
8.11.2012 17:07 Kit
Rozbalit Rozbalit vše Re: Transformace textoveho souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk '/^jmeno:/ {jmeno=$2; getline; print jmeno ":" $2;}' <vstup.txt
8.11.2012 17:14 Kit
Rozbalit Rozbalit vše Re: Transformace textoveho souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě jedna varianta, která snese trochu horší vstup (i komentáře mezi řádky), ale při standardním vstupu dává stejné výsledky.
awk '/^jmeno:/{jmeno=$2} /^prijmeni:/ {print jmeno ":" $2}' <vstup.txt

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.