les2 Inviato 11 Agosto 2011 Segnala Condividi Inviato 11 Agosto 2011 Ciao, ho la necessità di lanciare un comando che mi permetta di cercare un pattern all'interno di un file (e che risponda positivo o negativo), per fare le sostituzioni uso perl in questo modo: perl -pi -e 's|find|replace|sg' *.txt o un comando simile (non necessariamente perl ma che sia un comando singolo) che mi permetta di matchare un pattern all'interno di un file? grazie a tutti in anticipo il mio sito Chameleon SSD Optimizer Link al commento Condividi su altri siti Altre opzioni di condivisione...
les2 Inviato 12 Agosto 2011 Autore Segnala Condividi Inviato 12 Agosto 2011 non so se ho formulato male la richiesta o invece la stessa non è così semplice come speravo... nel frattempo mi sono accontentato di fare l'operazione con objective-c (decisamente più macchinoso però ) il mio sito Chameleon SSD Optimizer Link al commento Condividi su altri siti Altre opzioni di condivisione...
telebabbo Inviato 18 Agosto 2011 Segnala Condividi Inviato 18 Agosto 2011 non so se ho formulato male la richiesta o invece la stessa non è così semplice come speravo... nel frattempo mi sono accontentato di fare l'operazione con objective-c (decisamente più macchinoso però ) puoi farlo con sed: cat -A file_originale.txt | sed -e 's/PTRN_DA_CERCARE/SOSTITUZIONE/g'>>file_modificato.txtrm file_originale.txt; mv file_modificato.txt file_originale.txt Link al commento Condividi su altri siti Altre opzioni di condivisione...
les2 Inviato 18 Agosto 2011 Autore Segnala Condividi Inviato 18 Agosto 2011 intanto grazie mille domanda: così però non faccio anche una sostituzione con il comando mv? nello specifico del mio caso alla fine ho fatto una piccola app in objective-c che fa l'operazione, mi chiedevo però se appunto non esistesse un comando bash;) il mio sito Chameleon SSD Optimizer Link al commento Condividi su altri siti Altre opzioni di condivisione...
telebabbo Inviato 18 Agosto 2011 Segnala Condividi Inviato 18 Agosto 2011 intanto grazie mille domanda: così però non faccio anche una sostituzione con il comando mv? nello specifico del mio caso alla fine ho fatto una piccola app in objective-c che fa l'operazione, mi chiedevo però se appunto non esistesse un comando bash;) Certo, fa una sostituzione, ma sostituisce il nuovo contenuto al vecchio, ti spiego meglio il comando che ti ho suggerito: cat -A file_originale.txt | sed -e 's/PTRN_DA_CERCARE/SOSTITUZIONE/g'>>file_modificato.txt;rm file_originale.txt; mv file_modificato.txt file_originale.txt cat -A file_originale.txt questo comando legge il file originale cat -A file_originale.txt | sed il pipe "|" fra il comando cat e il comando sed significa che sed lavorerà sui dati ricevuti da cat sed -e 's/PTRN_DA_CERCARE/SOSTITUZIONE/g'>>file_modificato.txt come abbiamo detto, sed lavorerà sui dati ricevuti da cat, e non su un file fisico (sed = stream editor), quindi avrà bisogno di scrivere questi dati da qualche parte, in questo caso il scrive in "file_modificato.txt" A questo punto abbiamo due files, quello originale e quello modificato. rm file_originale.txt; mv file_modificato.txt file_originale.txt Questa sequenza cancella il file originale e rinomina il file modificato con il nome del file originale, così da ottenere la situazione "iniziale" Dubbi? NB: nel mio messaggio precedente mi sono scordato di mettere il punto e virgola fra ">>file_modificato.txt" e "rm file_originale.txt"!! Link al commento Condividi su altri siti Altre opzioni di condivisione...
les2 Inviato 18 Agosto 2011 Autore Segnala Condividi Inviato 18 Agosto 2011 grazie ancora per la disponibilità , mi era chiaro il il comando, però in realtà a me serve solo un return true/false se il pattern è contenuto nel file o meno. togliere le righe "bianche" e crarne un doppione mi sembra di contorno, il dubbio in realtà è: anche avendo "pattern da cercare" e "cercato" identici, mi da una risposta positiva o negativa? non mi pare (ma in questo momento non lo sto testando) il mio sito Chameleon SSD Optimizer Link al commento Condividi su altri siti Altre opzioni di condivisione...
telebabbo Inviato 18 Agosto 2011 Segnala Condividi Inviato 18 Agosto 2011 ah ok... non avevo capito bene io allora beh a questo punto puoi usare grep -c "PATTERN" file.txt anche se questo restituisce il numero di occorrenze del pattern, e restituisce 0 se non trova niente (al massimo puoi inserirlo all'interno di uno script che a sua volta restituisce true se il risultato è diverso da 0 e false nel caso contrario) Link al commento Condividi su altri siti Altre opzioni di condivisione...
les2 Inviato 18 Agosto 2011 Autore Segnala Condividi Inviato 18 Agosto 2011 grandissimo, proprio questo cercavo!!! (in effetti mi sembrava assurdo che non ci fosse) e io pollo però perchè la funzione grep la uso anche spesso per avere dei risultati leggibili, ma non sapevo leggesse il contenuto di un file! diciamo che non sono il più forte a riga di comando grazie ancora!!! il mio sito Chameleon SSD Optimizer Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.