Označení každého xtého řádku...

...

Moderátor: Mods_senior

Uživatelský avatar
noSwear
nováček
Příspěvky: 9
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline

Označení každého xtého řádku...

Příspěvekod noSwear » 05 dub 2013 18:26

Zdravím, asi mám hodně zvláštní dotaz, ale ušetřilo by mně to hodně času. :D

Mám soubor (.txt), který má 2187 řádků a potřebuju označit pouze každý třetí...Přesněji mám dva stejné soubory o stejném počtu řádků a z jednoho potřebuji každý 3. řádek vložit do druhého :D Snad je to pochopitelný...dalo by se to nějak ?

Předem díky
Skyliine

Reklama
Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23603
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod ITCrowd » 05 dub 2013 22:24

Můžu ti na to napsat skript. Potřebuji:
Přesný název prvního souboru i s cestou (př. C:\Program Files\Superprogram.txt)
Počet řádků v prvním souboru je vždy konstantní, nebo se mění?
Přesný název druhého souboru i s cestou
Druhý soubor může být vytvářen, nebo se může zapisovat na konec minulého souboru.
Skript také může kopírovat jen ty řádky, které obsahují určitý řetězec.
Operační systém, který používáš.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Uživatelský avatar
noSwear
nováček
Příspěvky: 9
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod noSwear » 06 dub 2013 20:51

Nejlepší by bylo opravdu jen označení každého 3. řádku ....pokud to nepůjde tak :

Název souboru ze kterého má být kopírováno: big5_string2.txt ( C:\GO\big5_string2.txt )
Název souboru do kterého má být kopírováno: big5_string.txt ( C:\GO\big5_string.txt )
Jestli jsem to dobře pochopil tak je vše stejné...řádky v obou souborech jsou stejné jen se mění obsahem...
Ukázka prvního souboru:

Kód: Vybrat vše


"<±ćµĺ> °ˇÁö°í ŔÖ´Â µ·ŔĚ şÎÁ·ÇŐ´Ď´Ů.";
"Code066";

"<±ćµĺ> °ćÇčġ ĹőŔÚżˇ ˝ÇĆĐÇĎż´˝Ŕ´Ď´Ů.";
"Code067";

"<±ćµĺ> °řÁö±ŰŔ» ŔŰĽşÇŇ ±ÇÇŃŔĚ ľř˝Ŕ´Ď´Ů.";
"Code068";


Stejné řádky z druhého:

Kód: Vybrat vše


"<±ćµĺ> °ˇÁö°í ŔÖ´Â µ·ŔĚ şÎÁ·ÇŐ´Ď´Ů.";
"<Cech> Nedostatek yang!";

"<±ćµĺ> °ćÇčġ ĹőŔÚżˇ ˝ÇĆĐÇĎż´˝Ŕ´Ď´Ů.";
"<Cech> Nemůžeš přidávat BZK.";

"<±ćµĺ> °řÁö±ŰŔ» ŔŰĽşÇŇ ±ÇÇŃŔĚ ľř˝Ŕ´Ď´Ů.";
"<Cech> Nemusíte psát výše uvedené rady.";


Atd...
Druhý soubor může být vytvářen, s tím že by se musel řádek nad zkopírovat...tzn. že potřebuji nahradit Code068 (z 1. ukázky) textem <Cech> Nemusíte psát výše uvedené rady. z druhé ukázky :roll:
Takže mně logicky napáda jen to, že by se vytvářel soubor, kde by jeden řádek byl ze souboru A a druhý ze souboru B...chápu to dobře ? :D
Systémem je Win XP professional
Díky

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23603
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod ITCrowd » 06 dub 2013 21:03

Aha. Takže ty nepotřebuješ vkládat, ale nahradit každý třetí řádek v souboru big5_string2.txt třetím řádkem v souboru big5_string.txt. Je to tak?
Tak takhle jsem to nikdy nedělal, ale snad by to šlo. Ale co jsem pochopil, tak v souboru1 obsahuje každý třetí řádek slovo "Code" a v druhém "Czech". Jednalo by se tedy o nahrazení řádků s "Code" za řádky s "Czech". Je to tak?
Další odpovědi chybí.
Takže:
Počet řádků v prvním souboru je vždy konstantní, nebo se mění? A doplním - první i druhý soubor mají stejný počet řádků? (2187)?
A podle všeho jsi vložil řádky souboru zdroje a řádky souboru výsledku. Ale nevím jak vypadá soubor ze kterého se berou řádky s "Czech"?
/Edit: tak jsem to zkoumal a zjistil jsem, že vbs neumí číst ani zapsat na určitý řádek. zatímco čtení se dá oblbnout - prostě bude číst řádek po řádku a vždy 1. a 2. řádek by to uložilo beze změny, třetí řádek by se měnil dle poždadavků a ten by se zapsal do souboru.
Takže mi chybí jen soubor, ze kterého se budou brát ty české věty.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Uživatelský avatar
noSwear
nováček
Příspěvky: 9
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod noSwear » 06 dub 2013 23:11

každý řádek neobsahuje code atd...
big5_string:
http://mt2-sensei.g6.cz/files/big5_string.txt

big5_string2
http://mt2-sensei.g6.cz/files/big5_string2.txt

Prostě řádky s českým překladem z big5_string2 dostat do big5_string...není to životně důležité..už jsem to stejně 2x překládal ručně a teď to potřebuju jen prohodit, ale udělat takové množství řádků je šílený..zvlášť po 3....

Pokud to nepůjde, kašli na to...holt to udělám znova...teď bych spíš potřeboval udělat ještě něco jiného, řek bych lehčího. Pokud máš náladu, tak:

Soubor o xřádkách kde začátek každého řádku vypadá takto:

Kód: Vybrat vše

<Item vnum="10" hashName="µµ+0" name="Meč+0" ....
<Item vnum="20" hashName="Lĺ-T+0" name="Dlhý meč+0" ....
<Item vnum="40" hashName="---T+0" name="Bambusový meč+0" ....

je to databáze věcí...káždá věc má své vlastní ID ( item vnum ), potřebuji, aby když se Item vnum bude v obou souborech shodovat se hodnoty hashName=" " name=" " nahradily těmi z druhého souboru (jeden je slovensky a druhý česky) řádek ještě pokračuje dál, ale to už potřebuji zachovat původní...soubory nemají stejný počet řádků a věcí (ale hashName a name obsahují oba), proto potřebuju aby se hashName a name nahradily pouze při shodném ID ....předem díky za snahu a ochotu :-)

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23603
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod ITCrowd » 07 dub 2013 00:36

Tak je tam několik nesrovnalostí.
1. soubory nemají stejný počet řádků => Smyčka Do While - Loop musí být nastavena na soubor s menším počtem řádků (Jinak skript skončí chybou)
2. za tvých podmínek nelze řádky v jednom souboru nahradit, proto se vytvoří soubor nový.
3. zjednodušení "každý třetí řádek" u programátora neplatí. Je třeba říci, první řádek stejný, druhý řádek nahrazen, třetí řádek stejný a to až do vyčerpání řádků.
Skript vytvoří další textový soubor "C:\GO\big5_string0.txt", kam zapisuje podle pravidel bodu 3). Cesty k souborům jsou v const proměnných. Ukončení práce oznámí.
Kód okopíruj a vlož do notepadu či jiného jednoduchého textového editoru. Ulož. Změň příponu z .txt na .vbs. Spustíš jej poklepáním.
Zkontroluj výsledek zda souhlasí.

Kód: Vybrat vše

'******************************************************
'*       Script slučuje dva soubory do jednoho        *
'*           První řádek ze souboru1                  *
'*           Druhý řádek ze souboru2                  *
'*           Třetí řádek ze souboru1                  *
'*            Vytvořeno pro PC-HELP                   *
'*            Etienn@Script v. 1.0                    *
'******************************************************

Option Explicit
Dim fso, Text1, Text2, txtStream0, txtStream, txtStream2

Const file1 = "C:\GO\big5_string.txt"
Const file2 = "C:\GO\big5_string2.txt"
Const fileout = "C:\GO\big5_string0.txt"

' vytvoreni objektu pro pristup k souborum
Set fso = CreateObject("Scripting.FileSystemObject")

Set txtStream = fso.OpenTextFile(file1)
Set txtStream2 = fso.OpenTextFile(file2)
Set txtStream0 = fso.OpenTextFile(fileout, 2, True)

Do While Not (txtStream2.AtEndOfStream)
   
   Text1 = txtStream.ReadLine
      Text2 = txtStream2.ReadLine
      txtStream0.WriteLine Text1   
 
   Text1 = txtStream.ReadLine
      Text2 = txtStream2.ReadLine
      txtStream0.WriteLine Text2
      
   Text1 = txtStream.ReadLine
      Text2 = txtStream2.ReadLine
      txtStream0.WriteLine Text1   
            
Loop   

txtStream0.Close
MsgBox "Script proběhl", vbOKOnly + vbInformation, "Zpráva"

Set fso = Nothing

Druhý případ bude poněkud složitější.
Skript bude muset jít na řádek prvního souboru, pak projít celý druhý soubor, aby vyhledal Item vnum, pak pohledat text mezi uvozovkami hashname a nahradit jej a totéž mezi uvozovkami name. Pak uložit změněný řádek. To sice není nemožné (alespoň myslím), ale bude to chvíli trvat.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Uživatelský avatar
noSwear
nováček
Příspěvky: 9
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod noSwear » 07 dub 2013 01:24

Ty jo díky moc :thumbup: už jsem ani nedoufal, že to někdo vyřeší :D Funguje bezchybně...

Edit: a omlouvám se, myslel jsem, že počet řádků je v souborech stejný...

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23603
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod ITCrowd » 08 dub 2013 09:21

Citace ze SZ - a to i přes upozornění!
Vím, že problémy řešíš jen v tématech, ale můžu někdy očekávat ten druhý script ? :-) Jde jen o to jestli se do toho mám pustit ručně nebo ne...Díky

Na to můžu říci jen tolik, že pokud jsem měl dotazy na soubory v prvním případě, pak předpokládám, že budou odpovězeny i v druhém případě.
Tedy plný název souborů i s cestou.
Hodily by se mi i ty soubory jako v prvním příkladu, neboť jak se ukázalo, popis požadavku byl dost nepřesný.
Dále samozřejmě který soubor má být nahrazován textem v druhém.
Dokud to nedodáš, tak jaksi nemám na čem pracovat.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Uživatelský avatar
noSwear
nováček
Příspěvky: 9
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod noSwear » 08 dub 2013 19:55

Omlouvám se, z item_proto1.xml nahradit name=" " do item_proto2.xml podle item vnum, zbytek řádku zachovat (hashName už ne). Jde tedy o překlad name ze slovenštiny do češtiny. Soubory nemají stejně itemů.

C:\IP\item_proto1.xml
C:\IP\item_proto2.xml

item_proto1
http://mt2-sensei.g6.cz/files/item_proto1.txt
item_proto2
http://mt2-sensei.g6.cz/files/item_proto2.txt
Soubory jsem musel dát do txt jinak se na ftp nezobrazily...normálně mají koncovku xml

Děkuji

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23603
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod ITCrowd » 09 dub 2013 15:10

Tak mám pro tebe špatnou zprávu, nejsem schopen to nějak dát dohromady. Alespoň ne v čase, který jsem tomu hodlal věnovat. Pokud budeš mít zájem, můžu na tom ještě zapracovat, ale nebude to rozhodně v dohledné době.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Uživatelský avatar
noSwear
nováček
Příspěvky: 9
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline

Re: Označení každého xtého řádku...

Příspěvekod noSwear » 09 dub 2013 16:05

Dobrý nevadí, nelam si s tim už hlavu...díky za snahu :-)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Kopírování řádků s funkcí když Příloha(y)
    od Martyn20 » 20 črc 2023 16:50 » v Kancelářské balíky
    3
    1916
    od Melvidor Zobrazit poslední příspěvek
    21 črc 2023 08:41
  • Ukotvení prvního a posledního řádku v tabulce.
    od Kopusek » 13 pro 2023 10:50 » v Kancelářské balíky
    2
    1545
    od Kopusek Zobrazit poslední příspěvek
    14 pro 2023 08:55
  • excel text na konec více řádků najednou Příloha(y)
    od Myerina » 03 led 2024 11:51 » v Kancelářské balíky
    5
    911
    od Zivan Zobrazit poslední příspěvek
    04 led 2024 09:42

Zpět na “Vše ostatní (sw)”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti