Newsgroup: it.comp.os.linux.iniziare
Titolo: sostituire testo all'interno di un file

Ad esempio voglio che nel file /etc/test.conf venga sostituito "a b c" 
con "x y z".
E' possibile?
 
Inoltre dopo la sostituzione il testo deve essere salvato in un nuovo 
file; infatti il file originale (/etc/test.conf) deve restare 
assolutamente intatto.
 
RIPETO
 
"il file originale (/etc/test.conf) deve restare assolutamente intatto"
 
Chiaro?
 
Comunque come sapete il replacing è un'operazione delicata, quindi prima 
di rispondere cercate di valutare quale sia il metodo più adatto.

 di rispondere cercate di valutare quale sia il metodo più adatto.
 
 
Valuta di studiare un po', invece di fare domande con questo tono da 
deficiente.
 


sed
 
Ciao Jack
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 di rispondere cercate di valutare quale sia il metodo più adatto.
 
ROTFL, delicato... 'na riga in sed o awk, e ci sono n altri metodi 
parimenti efficienti:
 
sed s/"a b c"/"x y z"/ /etc/test.conf > test2.conf
awk '{gsub("a b c","x y z");print;}' /etc/test.conf > test2.conf
(continuare a piacere)
 
-- 
Massimo Bacilieri AKA Crononauta


Ok, capisco
Siamo su iniziare ed ad un neofita una problema del genere può sembrare 
come scalare una montagna
 

Addi' 28 mar 2014, enoquick scrive:

Mi sa che Alex, facendo prove, e' incorso in qualche incidente
ferroviario dando:
$: "sed s/"a b c"/"x y z"/g test.conf > test.conf
 
stocasticamente imprevedibile, e adesso e' ancora sotto scioc.
 
-- 
Tanti saluti
 


Puo darsi ma se conosce sed basta un minimo di intelligenza per 
accorgersi che non si puo usare lo stesso file ed evitare di postare 
drammi di quel tipo
 
 
 


 
molto bene, se usati con attenzione ovviamente...


 
i metodi che ho visto sono tanti, proprio  per questo voglio cercare di 
trovare quello più consono

 sed
 
grazie ;)

 stocasticamente imprevedibile, e adesso e' ancora sotto scioc.
 
niente affatto, prima di avventurarsi volevo solo avere qualche 
suggerimento.
Chiamasi, questa cosa, prudenza.
 


Facebook: Massimo Bacilieri

 E' possibile?
 
il sistema più semplice, visto che non sei pratico, è usare uno degli 
innumerevoli editor di testo disponibili e poi salvare il file con un 
altro nome
 
-- 
bye
!(!1|1)
 


 
giustissimo: attenzione e consultazione per fugare ogni dubio


beh dai a questo c'ero arrivato ben 25 anni fa

Addi' 28 mar 2014, not1xor1 scrive:

Be' visto che ci sei direi che e' fondamentale "prima" salvare, non poi,
cioe' e' meglio editare solo la copia dell'originale. Ad esempio se un
pivello lo edita con emacs o con vi, a Pasqua riesce ad uscire!
 
-- 
Tanti saluti
 


 
sed lo conosco da adesso,quindi non potevo sapere se facesse delle 
sostituzioni implicite a mia insaputa

 di rispondere cercate di valutare quale sia il metodo più adatto.
 
Fatti una merdosa copia del file prima di cominciare, come fanno tutti 
quelli che hanno un po' di cervello e che nel dubbio vogliono essere 
sicuri di non perdere dati. Ed evita di trattare chi ti legge come dei 
deficienti, piuttosto ringrazia bene chi ti ha risposto perché con questo 
tono è in odore di santità chi non ti manda a cacare.

 directory...
 
Perche`, come e` noto, se a sed dico di modificare il file test.conf, lui mi 
modifica tutti i file presenti sul disco tranne test.conf...
 
Enrico

 giustissimo: attenzione e consultazione per fugare ogni dubio
 
 
-- 
 
piergiorgio


come è altrettanto noto che non conoscevo quasi affatto sed, ma sai che 
ci sono software che operano principalmente sulle dir?

 possibile o meno.
 
ottimo!!!

 piuttosto ringrazia bene chi ti ha risposto perché con questo
 
l'ho sempre fatto
 
 

 Chiamasi, questa cosa, prudenza.
 
 
Puoi sempre fare una copia di riserva prima di lavorarci su.
 
 
-- 
Please use a decent Usenet newsreader, thanks.
 

 non mi risulta di aver trattato qualcuno in tal modo
 
Il tono del messaggio originale non era molto garbato. A conferma 
comunque del fatto che non portiamo rancore, ti do' un altro suggerimento:
 
metti che hai da sostituire "abc" con "def"
 
1) installi rpl, se non l'hai gia'
2) fai una copia dei file in altra directory, e ti ci posizioni
3) scrivi rpl -sR  "abc" "def" ./
4) se non vedi cose strane (il comando precente e' simulato) scrivi
rpl -R  "abc" "def" ./


e neanche la shell direi visto che scrivere:
cmd < fileIn > fileout
fileIn viene aperto dalla shell in sola lettura e fileOut in sola 
scrittura con troncamento e cmd non ha niente ha che fare con questo
cmd non conosce nemmeno (in modo diretto) i nomi fileIn e fileOut in 
quanto legge dallo standard input e scrive sullo standard output
 

 ci sono software che operano principalmente sulle dir?
 
Hai una strana confusione in testa. Non esistono software che operano 
"principalmente" sulle dir. Esistono software - meglio dire "comandi" - 
che operano sulle dir *quando gli viene detto di farlo*.
Non è che lo fanno a capocchia quando pare a loro.
 
Poi si ritorna sempre al discorso iniziale, se spari comandi ad minchiam 
canis otterrai risultati impredicibili. In questo caso però il problema 
non è nel software, ma nell'operatore.


 canis otterrai risultati impredicibili.
 
infatti è proprio quello che ho fatto, invece di chiedere e 
documentarmi, ho dato comandi a casaccio.
Ma che cosa ti è successo?


certo, adesso che lo so... infatti mi hai fatto conoscere un altro comando.
Thanks!

 Molto bene
 
No, infatti, mkdir e rmdir operano *esclusivamente* sulle dir, non 
"principalmente"; mentre rm opera sia su file che su directory; e per 
quanto riguarda le directory, solo se esse sono vuote (e se non lo sono 
ciò implica vuotarle preventivamente con -r, da cui il "le cancella solo 
se gli viene detto di farlo").
 
Quindi vedi bene che di comandi che operano "principalmente" sulle 
directory non ce ne sono, a rigore.



alcuni software di sincronizzazione (non tutti), operano principalmente 
sulle dir., ma volendo scendono nei dettagli

 sulle dir., ma volendo scendono nei dettagli
 
(giusto per rimanere in tema) s/principalmente/esclusivamente/
Detto questo, man e` il comando che ti permette di leggere la pagina di 
manuale (man page) di un comando, la prossima volta che hai dei dubbi, usalo
 
Enrico