Fórum Root.cz
Hlavní témata => Software => Téma založeno: MireceX 09. 10. 2012, 08:29:39
-
Dobry den
Tento problem resim uz dva mesice a beznadejne
Nenasel jsem zadny program ktery by to umel a neumim skriptovat dobre abych neco vytvoril v autohotkey nebo VBS
Potrebuji upravit udaje v txt souboru
Mam dva soubory v txt v jednom jsou udaje ktere chci aby se okopirovali do druheho txt souboru
Problem je ten ze druhy txt soubor muze byt upraven...
Vytvoril jsem narychlo obrazek popisujici jak si program prectavuji nebo skript
http://i.imgur.com/OKTeA.png
Kazdy radek ma nazev a hodnoty
Mezi znaky """""TEST""""" je to co ma program nebo script vyhledat
Jestli zna nekdo program nebo nejaky skript budu rad kdyz napise dekuji
-
pyco to je sila :D
-
Není ;D
Je to tak, že z OLD chceš zachovat pořadí a formát indexu a z NEW pouze hodnoty (+validace formátu indexu)?
-
Ja bych to rešil dotazem v SQL nebo VBA scriptem v excelu.
Kombinací několika programu třeba porovnávaní v Total Commanderu, excelu a spousty ruční práce toho dosahneš také.
Otazkou je kolik indexu potřebuješ takhle měnit, pokud je jich méně než 10 tak to udělej ručně.
-
Pokud je rucni reseni mozne, muzes take vzit zkusebni verzi "Beyond Compare", to je porovnavaci program, ktery umoznuje i editaci souboru na obou stranach a kopirovani bloku z jedne strany na druhou. V tom si otevres oba soubory a jasne uvidis, ktere radky jsou na stejne pozici a jen zmeneny a ktere se vyskytuji jen na jedne strane.
JInak doporucuji investovat trosku vic snahy pri pokladani dotazu - vcetne veci jako "prectavovat si".
-
To je úkol ze stření školy na páteční odpoledne ;D
V krocích: Otevři soubor B pro čtení, soubor A pro čtení, soubor C pro zápis.
Vytvoř pole a,b [];
For x=0 to B.length,x++
For y=0 to A.length, y++
pokud hledaný řetězec a- =koresponduje s b[y], vyplň údaje a přestaň hledat.
Ulož doplněné pole do souboru.
-
Tie subory druhykrat publikuj radsej v textovej forme - je otrocke vytvarat subor podla obrazku
Na take veci je najlepsie pouzit AWK.
mame teda subor Main.txt
TEST1=0
TEST2=(A=-0,B=-0)
TEST3=0x000000
TEST4=(A=0,B=0,CC=0,DD=0,VV=0,RRRR=0.0)
TEST5=0.0
a 3 dalsie subory:
ABC1.txt
TEST1=0
TEST2=(A=-0,B=-0)
TEST3=0x000000
TEST4=(A=0,B=0,CC=0,DD=0,VV=0,RRRR=0.0)
TEST5=0.0
ABC2.txt
TEST1=0
TEST3=0x000000
TEST5=0.0
TEST4=(A=0,B=0,CC=0,DD=0,VV=0,RRRR=0.0)
TEST2=(A=-0,B=-0)
ABC3.txt
TEST1=0
TEST2=(A=-0,B=-0)
TEST3=0x000000
TEST4X=(A=0,B=0,CC=0,DD=0,VV=0,RRRR=0.0)
TEST5X=0.0
k tomu tento awk-skript
# Run:
# awk -f OKTeA.awk Main.txt ABC.txt
BEGIN {
FS = "=="
}
{
if (FILENAME == ARGV[1]) {
# mark values from file Main.txt into array
sub(/=/,"==",$0) # replace first '=' with '=='
gsub(/"/,"",$0) # sweep out all '"'
test_array[$1] = $2
#print $1 "--> " test_array[$1]
}
if (FILENAME == ARGV[2]) {
# print adequate lines from file ABC.txt
sub(/=/,"==", $0) # replace first '=' with '=='
if (test_array[$1]) {
print $1 "=" test_array[$1]
}
}
}
Ked to spusts dostanes co si chcel
$ awk -f OKTeA.awk Main.txt ABC1.txt
TEST1=1
TEST2=(A=-1,B=-1)
TEST3=1x111111
TEST4=(A=1,B=1,CC=1,DD=1,VV=1,RRRR=1.1)
TEST5=1.1
$ awk -f OKTeA.awk Main.txt ABC2.txt
TEST1=1
TEST3=1x111111
TEST5=1.1
TEST4=(A=1,B=1,CC=1,DD=1,VV=1,RRRR=1.1)
TEST2=(A=-1,B=-1)
$ awk -f OKTeA.awk Main.txt ABC3.txt
TEST1=1
TEST2=(A=-1,B=-1)
TEST3=1x111111