![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt. |
Több, UNIX és Linux fórum témák Ön által talált Hasznos
|
||||
| Szál | Thread Starter | Fórum | Válaszok | Utolsó hozzászólás |
| hogy hogyan file mutató egy sor, a C | user_prady | Magas szintű Programozás | 7 | 03-27-2008 12:32 AM |
| visszatérés az előző | user_prady | Shell programozás és Scripting | 12 | 12-18-2007 07:37 AM |
| hogy hogyan kell menni a korábbi sorban vim | useless79 | A UNIX a fejlett és szakértői Felhasználók | 2 | 09-16-2007 09:10 AM |
| Keressen és beolvasásának előző fájl | paulsew | Shell programozás és Scripting | 2 | 02-23-2007 08:04 AM |
| Előző napi dátumot Perl? | rajus19 | Shell programozás és Scripting | 4 | 07-18-2006 01:40 AM |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
Perl, hogy hogyan mutató az előző tétel egy txt fájlt?
Van egy szöveges fájl, amely blokkolja a szöveget. Minden blokk kezdődik # # # és végződik End_ # # #.
Írtam perl script keresni egy stringet, 2. sor (nem érdekelnek a # # #) az egyes blokk ha párosulnia kell nyomtatni, hogy az egész blokk. Szerint a bemeneti fájlt alatt, akkor ki fogja írni blokkok # 02, # 04, # 05. Itt van a kérdés, nincs párja a probléma SEARCH_STR, de ha egyszer egyeztetett, hogyan tudom mozgatni vissza az előző vonalakat? például a blokk # 02, kiegyenlített a 3. sorban, de szükségem van a nyomtatott sorok 1 & 2. Köszi előre is minden segítséget! Az enyém: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d #! / 46020/local/bin /perl -w # if ($ # ARGV! \u003d 0) ( print "Meg kell adnia a keresési feltételeknek. \ n"; exit; ) my $ query \u003d $ ARGV [0]; my $ input \u003d "/ mypath / inputFILE.txt"; my $ line; my $ tag \u003d 0; my @ results \u003d (); open (FILE, "<$ INPUT") or die "Cannot open '$ INPUT' file: $!"; while ($ line \u003d <file>) ( next if ($ line \u003d ~ / ^ # [0-9] [0-9] .* - / | | $ line \u003d ~ / ^ \ s *$/); if ($ line \u003d ~ / $ query / i) ( $ tag \u003d 1; ) if ($ line \u003d ~ / ^ End_ # / & & $ tag \u003d\u003d 1) ( push (@ eredmények, $ line) if ($ tag \u003d\u003d 1); $ tag \u003d 0; ) push (@ eredmények, $ line) if ($ tag \u003d\u003d 1); ) Close (file); print "@ eredményt \ n"; exit; Bemeneti_fájl: \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d # 01 - block rajthoz itt some text here more text here több horogsor több horogsor több horogsor End_ # 01 # 02 - blokk rajthoz itt some text here ez a sor tartalmazza a SEARCH_STR és valami több horogsor több horogsor End_ # 02 # 03 - blokk rajthoz itt some text here more text here több horogsor több horogsor több horogsor End_ # 03 # 04 - blokk rajthoz itt some text here több horogsor több horogsor A SEARCH_STR itt van, és valami some text here több horogsor több horogsor több horogsor End_ # 04 # 05 - block rajthoz itt some text here több horogsor A SEARCH_STR itt van, és valami több horogsor End_ # 05 # 06 - blokk rajthoz itt some text here more text here több horogsor több horogsor több horogsor End_ # 06 |
|
||||
|
Ha Smiling_Dragons javaslat nem működik, akkor használhatja a Tie:: File modul, mely lehetővé teszi, hogy írni és olvasni egy fájlt, mint egy perl tömbben. Lásd a Tie:: File dokumentációját használat részleteket. Ez is egy alap modult, így kellett volna telepíteni. Ha elakad, tegye vissza.
|
|
||||
|
Csak azt szeretném tisztázni szerint a inputFILE.txt, amikor futtatja a szkriptet a SEARC_STR kiírja # 02, # 04, # 05 blokkokat. pl scriptname keresés.
Kódomat képes nyomtatni kiegyenlített plusz a következő sorokat akár End_ # # #, de kell egy módja annak, hogy nyomtatott sorok előtt kiegyenlített az adott blokk. Köszönöm. |
|
||||
|
Igen, azt hiszem mindketten megértették, hogy a követelmény, és mindkét javaslatokat lehet használni arra, amit akar. Ha ismeri a hurok révén perl tömbök használata indexekkel: $ array [n] akkor használja a Tie:: File lesz szép egyenes továbbít, ha elolvassa a dokumentációt.
S_M javaslata beolvassa a fájl darabokban, nem sorról sorra, és úgy néz ki mint ez kellet volna dolgozik bár az utolsó mérkőzés meghiúsulhat, ha nem két újsor végén a fájlt. Önnek meg kell próbálni, és megnézni, vagy talán tudja állapítani, hogy fel. |
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|