Pagina 1 di 2

Cerca e sostituisci

Inviato: mer 8 feb 2006, 13:38
da ag
Ciao a tutti,

esiste un comando in linux che riesce a fare un "cerca xxx e lo sostituisce con yyy" ?

Ringrazio tutti anticipatamente...

Ag

Inviato: mer 8 feb 2006, 13:40
da ag
scusate, mi ero dimenticato di dire che il cerca e sostituisci è da fare all'interno di un file di testo

Inviato: mer 8 feb 2006, 13:50
da MAT

Codice: Seleziona tutto

man tr

Inviato: mer 8 feb 2006, 13:59
da bit123
Puoi aprire il file con openoffice writer e dal menù/modifica trovi cerca e sostituisci. Facile no?

Inviato: mer 8 feb 2006, 14:12
da ag
grazie mille..provo a vedere :wink:

Inviato: mer 8 feb 2006, 14:16
da ag
nooo..troppo semplice con openoffice....devo fare uno script che lo faccia al posto mio!!!è per questo che ho chiesto se esiste un comando.. ciao e grazie comunque

Inviato: mer 8 feb 2006, 14:34
da gallows
OpenOffice??? :shock:

sed comunque fa quello che cerchi.

Inviato: mer 8 feb 2006, 14:46
da bit123
Il Picciotto ha scelto la strada più difficile perché alla fine avrà imparato qualcosa in più. Bravo! Baciamo le mani! :wink:

Inviato: mer 8 feb 2006, 15:16
da masalapianta
bit123 ha scritto:Il Picciotto ha scelto la strada più difficile perché alla fine avrà imparato qualcosa in più. Bravo! Baciamo le mani! :wink:
strada piu' difficile? se devi sostituire la stringa aaa con la stringa bbb in tutti i file contenuti in una directory fai prima a fare for i in /path/dir/*;do cat $i|sed 's/aaa/bbb/g'>/tmp/aaa2bbb.tmp && mv tmp/aaa2bbb.tmp /path/dir/$i;done oppure a lanciare OO.o, aspettare 3/4 d'ora che si apra, aprire il primo file, clickare nel menu apposito, inserire la stringa da cercare e quella da sostituire negli appositi campi, cliccare su ok, cliccare per salvare il file, cliccare per chiuderlo, cliccare per aprire il secondo file, clickare nel menu apposito, inserire la stringa da cercare e quella da sostituire negli appositi campi, cliccare su ok, cliccare per salvare il file, cliccare per chiuderlo, cliccare per aprire il terzo file, clickare nel menu apposito, inserire la stringa da cercare e quella da sostituire negli appositi campi, cliccare su ok, cliccare per salvare il file, cliccare per chiuderlo, cliccare per aprire il quarto file, ecc... ecc...?

Inviato: mer 8 feb 2006, 15:44
da Sawk
quoto masalapianta :lol: :lol:

Inviato: mer 8 feb 2006, 17:32
da ag
Grazie a tutti ragazzi, penso che la strada piu conveniente sia usare il sed..
l'ho provato e funziona tutto..
l'unica cosa che noon mi viene è sostituire anche il caratterre / ?

per esempio se dovessi sostituire la stringa </loc> con uno spazio vuoto cosa dovrei scrivere?


sed 's/</loc>//g/' nome_file_input produrrebbe errore, raga mi rinfrescate le idee sui caratteri di escape? a causa del lavoro è un po' che sto trascurando linux e piano piano si tende a dimenticare..
Grazie
ag

Inviato: mer 8 feb 2006, 17:35
da MAT
Devi usare il carattere di escape \, quindi diventerebbe

Codice: Seleziona tutto

sed 's/<\/loc>//g' nome_file_input

Inviato: mer 8 feb 2006, 17:45
da ag
è veroooooooooooooo

ma come ho fatto a dimenticarlo...... :cry:

grazie veramente...

Alla prossima
ciao a tutti

Inviato: gio 9 feb 2006, 13:32
da targzeta
masalapianta ha scritto: ... for i in /path/dir/*;do cat $i|sed 's/aaa/bbb/g'>/tmp/aaa2bbb.tmp && mv tmp/aaa2bbb.tmp /path/dir/$i;done
Solo una precisazione, credo che nella nuova versione di sed non ci sia più bisogno di fare il "trucchetto" del file temporaneo, dovrebbero aver messo un opzione per effettuare le modifiche direttamente sul file di input. Su questo computer ho la Slack 10.0 e la versione di sed è la 3.02.
Se qualcuno ha una versione superiore di sed, più darmi comferma? La Slack 10.2 mi sebra che abbia versione più aggiornata. On line, nella pagina della gnu ho trovato solo il man della versione 3.02.

Grazie mille
Spina

Inviato: gio 9 feb 2006, 13:38
da Paoletta
cat $i|sed 's/aaa/bbb/g'>
e quale sarebbe il problema facendo semplicemente
cat $i|sed 's/aaa/bbb/g'> /path/dir/$i
?