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

Dotaz: Uprava textu ve vimu

4.6.2009 14:00 --- | skóre: 13 | blog: LINUXDRAK
Uprava textu ve vimu
Přečteno: 505×
Odpovědět | Admin

Dobrý den, potřeboval bych poradit, jak následující řádek textu upravit na druhý řádek.

V souboru je celkem přes 12 tisíc řádku. Děkuji za pomoc.

Zkoušel jsem to přes regulérní příkazy, ale v manuálu je napsáno že se dá použít sekvence \(\d\{2\}\) jen devětkrát. Je to pravda ? Či mohu mít více závorek ?

 

 060509073707393p11355hd92510  na  null;"06.05.09";"07:37";"07:39";"3p1 1355";"h";"d";"925";"10"

 

Děkuj za pomoc :)

Jan 

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

Odpovědi

4.6.2009 14:12 --- | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Odpoved :

E51 : Too many \(

4.6.2009 14:27 --- | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Uprava textu ve vimu

 

 :%s/\(\d\{2\}\)\(\d\{2\}\)\(\d\{2\}\)\(\d\{2\}\)\(\d\{2\}\)\(\d\{2\}\)\(\d\{2\}\)\(.\{3\}\)\(\d\{4\}\)/null;"\1.\2.\3";"\4:\5";"\6:\7";"\8 \9";

a pote pokracovat od konce ?

4.6.2009 14:38 --- | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Uprava textu ve vimu

 Druhy prikaz :

:%s/\(.\{43\}\) \([dh]\)\([dh]\)\(\d\{3\}\)\(\d\{2\}\)/\1"\2";"\3";"\4";"\5"

Jen doufam, zda je mozne to nejak zjednodusit ?

4.6.2009 14:19 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak to udělej na vícekrát, dva a více příkazů nahrazení.

4.6.2009 14:21 --- | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Mozna to bude jedine reseni a pak pokracovat od konce , vid ?

5.6.2009 16:30 joe
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
Co od konce?
4.6.2009 15:51 JaSel | skóre: 17 | blog: kseles
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli netrváš striktně na ViM, tak bych měl pro Tebe radu. Řešil bych to pomocí awk, s prázdným oddělovačem pole:

awk -F "" '{print "null;\" $1 $2 "." $3 $4 "." $5 $6 "\";\" $7 $8 }' < vstupni.soubor

Nechce se mi to psát celé, jako nápověda to snad stačí.

6.6.2009 20:50 --- | skóre: 13 | blog: LINUXDRAK
Rozbalit Rozbalit vše Re: Uprava textu ve vimu

Jaky prazdny oddelovac ?

Hodnoty jsou v radku nalepene u sebe.

Jan

6.6.2009 21:32 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Uprava textu ve vimu

man awk, parametr -F

8.6.2009 07:35 JaSel | skóre: 17 | blog: kseles
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
Prázdný oddělovač způsobí právě to, že za pole/sloupce se berou jednotlivé znaky. Je to to -F "". Schválně si to zkus, jako vstup tomu dej třeba jenom jeden řádek z toho Tvého souboru. To moje není napsané úplně do konce řádku, ale jako příklad to stačí. Zbylé sloupce si už doplníš sám ...
8.6.2009 11:11 pozortucnak | skóre: 21 | blog: vecny_windowsar
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
awk -F "" '{print "null\;\""$1$2"."$3$4"."$5$6"\"\;\""$7$8":"$9$10"\"\;\""$11$12":"$13$14"\"\;\""$15$16$17" "$18$19$20$21 "\"\;\""$22"\"\;\""$23"\"\;\""$24$25$26"\"\;\""$27$28"\""}' < vstupni.soubor
Jsem mimořádně obtížný případ
7.6.2009 09:12 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Devětkrát mi vychází docela dobře, nejdřív upravit na tvar:
null;"060509";"0737";"0739";"3p1 1355";"h";"d";"925";"10"
         1       2      3        4      5   6    7    8
a pak nahradit všechny \("\d\{6\}"\) a \("\d\{4\}"\)
7.6.2009 09:13 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Uprava textu ve vimu
místo 4 má být 4 5 atd, přepočítal jsem se :)

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.