Cerca e sostituisci

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
ag
Linux 1.x
Linux 1.x
Messaggi: 113
Iscritto il: ven 21 gen 2005, 0:00

Cerca e sostituisci

Messaggio 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

ag
Linux 1.x
Linux 1.x
Messaggi: 113
Iscritto il: ven 21 gen 2005, 0:00

Messaggio da ag »

scusate, mi ero dimenticato di dire che il cerca e sostituisci è da fare all'interno di un file di testo

Avatar utente
MAT
Linux 4.x
Linux 4.x
Messaggi: 1242
Iscritto il: mer 9 mar 2005, 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena

Messaggio da MAT »

Codice: Seleziona tutto

man tr

bit123
Linux 2.x
Linux 2.x
Messaggi: 350
Iscritto il: dom 27 nov 2005, 16:26
Località: Catania
Contatta:

Messaggio da bit123 »

Puoi aprire il file con openoffice writer e dal menù/modifica trovi cerca e sostituisci. Facile no?

ag
Linux 1.x
Linux 1.x
Messaggi: 113
Iscritto il: ven 21 gen 2005, 0:00

Messaggio da ag »

grazie mille..provo a vedere :wink:

ag
Linux 1.x
Linux 1.x
Messaggi: 113
Iscritto il: ven 21 gen 2005, 0:00

Messaggio 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

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

OpenOffice??? :shock:

sed comunque fa quello che cerchi.

bit123
Linux 2.x
Linux 2.x
Messaggi: 350
Iscritto il: dom 27 nov 2005, 16:26
Località: Catania
Contatta:

Messaggio da bit123 »

Il Picciotto ha scelto la strada più difficile perché alla fine avrà imparato qualcosa in più. Bravo! Baciamo le mani! :wink:

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio 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...?

Avatar utente
Sawk
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: dom 6 feb 2005, 0:00
Località: Pordenone, Italy
Contatta:

Messaggio da Sawk »

quoto masalapianta :lol: :lol:

ag
Linux 1.x
Linux 1.x
Messaggi: 113
Iscritto il: ven 21 gen 2005, 0:00

Messaggio 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

Avatar utente
MAT
Linux 4.x
Linux 4.x
Messaggi: 1242
Iscritto il: mer 9 mar 2005, 0:00
Nome Cognome: Matteo Magni
Kernel: 2.6.20
Desktop: Fluxbox
Distribuzione: Gentoo
Località: Vignola, Modena

Messaggio da MAT »

Devi usare il carattere di escape \, quindi diventerebbe

Codice: Seleziona tutto

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

ag
Linux 1.x
Linux 1.x
Messaggi: 113
Iscritto il: ven 21 gen 2005, 0:00

Messaggio da ag »

è veroooooooooooooo

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

grazie veramente...

Alla prossima
ciao a tutti

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio 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

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio 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
?

Rispondi