Portál AbcLinuxu, 12. května 2025 12:36
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
Odpoved :
E51 : Too many \(
:%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 ?
Tak to udělej na vícekrát, dva a více příkazů nahrazení.
Mozna to bude jedine reseni a pak pokracovat od konce , vid ?
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čí.
Jaky prazdny oddelovac ?
Hodnoty jsou v radku nalepene u sebe.
Jan
man awk, parametr -F
-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 ...
null;"060509";"0737";"0739";"3p1 1355";"h";"d";"925";"10" 1 2 3 4 5 6 7 8a pak nahradit všechny
\("\d\{6\}"\)
a \("\d\{4\}"\)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.