Fórum Root.cz

Hlavní témata => Software => Téma založeno: MireceX 09. 10. 2012, 08:29:39

Název: Hledám program na úpravu souborů
Přispěvatel: 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
Název: Re:Hledám Program
Přispěvatel: Karel Bezděda 09. 10. 2012, 09:16:15
pyco to je sila :D
Název: Re:Hledám Program
Přispěvatel: Diskobolos 09. 10. 2012, 09:19:09
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)?
Název: Re:Hledám Program
Přispěvatel: norwi 09. 10. 2012, 09:56:00
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ě.
Název: Re:Hledám Program
Přispěvatel: v2kt0r 09. 10. 2012, 10:23:50
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".
Název: Re:Hledám Program
Přispěvatel: KapitánRUM 09. 10. 2012, 10:27:16
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
Ulož doplněné pole do souboru.
Název: Re:Hledám Program
Přispěvatel: mikrom 09. 10. 2012, 11:00:59
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
Kód: [Vybrat]
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
Kód: [Vybrat]
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
Kód: [Vybrat]
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
Kód: [Vybrat]
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
Kód: [Vybrat]
# 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
Kód: [Vybrat]
$ 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