The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
come spostare il puntatore del file a una particolare linea di c user_prady Di programmazione ad alto livello 7 03-27-2008 12:32 AM
restituire la riga precedente user_prady Shell scripting e di programmazione 12 12-18-2007 07:37 AM
come andare riga precedente in vim useless79 UNIX e avanzata per utenti esperti 2 09-16-2007 09:10 AM
ricerca e recuperare riga precedente nel file paulsew Shell scripting e di programmazione 2 02-23-2007 08:04 AM
Giorno precedente la data del giorno in Perl? rajus19 Shell scripting e di programmazione 4 07-18-2006 01:40 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 01-24-2008
tqlam tqlam is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2004
Interventi: 12
Perl come spostare il puntatore alla riga precedente in un file txt?

Ho un file di testo che ha blocchi di testo. Ogni blocco inizia con # # # e termina con End_ # # #.
Ho scritto un perl script per cercare una stringa da linea 2 (ignorare ogni riga inizia con # # #) di ciascun blocco
se trovato, che la necessità di stampare tutto il blocco. Secondo il file di input di seguito, verrà stampata blocchi # 02, # 04, # 05.
Ecco la mia domanda, non ho problemi SEARCH_STR la corrispondenza, ma una volta trovato, come faccio a spostare indietro precedenti linee?
ad esempio nel blocco # 02, in corrispondenza della linea 3, ma ho bisogno per stampare le linee 1 e 2.

Grazie in anticipo per qualsiasi aiuto!

IL MIO PROGRAMMA:
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
#! / 46020/local/bin /perl -w
#
if ($ # ARGV! \u003d 0) (
print "È necessario fornire un criterio di ricerca. \ n";
uscita;
)
my $ query \u003d $ ARGV [0];
my $ INPUT \u003d "/ mypath / inputFILE.txt";
my $ line;
my $ tag \u003d 0;
my @ results \u003d ();

open (FILE, "<$ INPUT") o morire "Impossibile aprire '$ INPUT' file: $!";
while ($ line \u003d <FILE>) (
prossimo 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 (@ risultati, $ line) if ($ tag \u003d\u003d 1);
$ tag \u003d 0;
)
push (@ risultati, $ line) if ($ tag \u003d\u003d 1);
)
close (FILE);
print "@ risultati \ n";
uscita;


Input:
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
# 01 - blocco linea qui
il vostro testo qui
più qui il testo
di più linee
di più linee
di più linee
End_ # 01

# 02 - blocco linea qui
il vostro testo qui
questa linea contiene il SEARCH_STR e qualcosa
di più linee
di più linee
End_ # 02

# 03 - blocco linea qui
il vostro testo qui
più qui il testo
di più linee
di più linee
di più linee
End_ # 03

# 04 - blocco linea qui
il vostro testo qui
di più linee
di più linee
il SEARCH_STR è qui e qualcosa
il vostro testo qui
di più linee
di più linee
di più linee
End_ # 04

# 05 - blocco linea qui
il vostro testo qui
di più linee
il SEARCH_STR è qui e qualcosa
di più linee
End_ # 05


# 06 - blocco linea qui
il vostro testo qui
più qui il testo
di più linee
di più linee
di più linee
End_ # 06
  #2 (permalink)  
Old 01-24-2008
Smiling Dragon's Avatar
Smiling Dragon Smiling Dragon is offline Forum Advisor  
Disorganizzato utente
  
 

Iscriviti Data: novembre 2007
Luogo: Nuova Zelanda
Interventi: 922
Post

Provate qualcosa di simile a questo:
Codice:
#!/46020/local/bin/perl -w
$/="\n\n";
while (<STDIN>) { if (/$ARGV[0]/) { print $_ }}
. / scriptname.pl SEARCH_STR </ mypath / inputFILE.txt
  #3 (permalink)  
Old 01-24-2008
KevinADC KevinADC is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: gennaio 2008
Messaggi: 731
Se Smiling_Dragons suggerimento non funziona, è possibile utilizzare il Tie:: File modulo, che vi permette di leggere e scrivere in un file solo come un perl array. Vedi la Tie:: File di documentazione per l'uso dettagli. E 'anche un modulo di base in modo che si deve avere già installato. Se si blocca, post indietro.
  #4 (permalink)  
Old 01-25-2008
tqlam tqlam is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2004
Interventi: 12
Just desidera chiarire, secondo la inputFILE.txt, quando viene eseguito lo script con il SEARC_STR verrà stampata # 02, # 04, # 05 blocchi. ad esempio scriptname ricerca.
Il mio codice in grado di stampare ha trovato più le seguenti linee fino a End_ # # #, ma ho bisogno di un modo per stampare le linee prima che ha trovato in questo blocco.

Grazie.
  #5 (permalink)  
Old 01-25-2008
KevinADC KevinADC is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: gennaio 2008
Messaggi: 731
Sì, credo che sia comprensibile tale obbligo, e che entrambi i suggerimenti possono essere usati per fare ciò che volete. Se sei a conoscenza attraverso il looping perl pedici utilizzando array: $ array [n] usando poi Tie:: File sarà piuttosto semplice: una volta di leggere la documentazione.

S_M suggerimento della legge il file in pezzetti, non linea per linea, e si presenta come dovrebbe funzionare anche se l'ultima partita potrebbe non riuscire se non c'è due a capo alla fine del file. Dovrete cercare e vedere o forse si può precisare che fino.
  #6 (permalink)  
Old 01-27-2008
Smiling Dragon's Avatar
Smiling Dragon Smiling Dragon is offline Forum Advisor  
Disorganizzato utente
  
 

Iscriviti Data: novembre 2007
Luogo: Nuova Zelanda
Interventi: 922
Citazione:
Originalmente inviato da KevinADC View Post
S_M suggerimento della legge il file in pezzetti, non linea per linea, e si presenta come dovrebbe funzionare anche se l'ultima partita potrebbe non riuscire se non c'è due a capo alla fine del file. Dovrete cercare e vedere o forse si può precisare che fino.
Penso che sarà ok con un normale file di terminazione - ho provato su un solo capo "e si guardò alright ma havn't mettere un sacco di test per assicurarsi
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 01:58 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0