Newsgroup: it.comp.os.linux.iniziare
Titolo: sostituire stringa in filez di testo

Dai, sono pigro, fatemi solo un esempio senza perdere tempo in
spiegazioni. Ho una serie di pagine html e c'e` da cambiare in tutte una
precisa stringa di testo con un'altra che daro` nella linea di comando.
SO che si puo`.
-- 
    Pardo pigro (e te credo, sono le undici e mezza cazzo devo dormire)
 
www.pardo.cjb.net

SO che si puo`.
351.18    Sostituire caratteri in un file di testo
Esiste un modo per rimpiazzare da riga di comando alcuni
caratteri contenuti in un file di testo con altri caratteri? In
sostanza, mi serve un modo per convertire tutti i «<» contenuti
in un file in «:»
---------
$ sed -e s/\</:/g nomefile > nuovofile[Invio]
[mario@mario mario]$ egrep cesso Testo.txt
outlook: Un cesso di newsreader
[mario@mario mario]$ sed -e s/\cesso/CACAIO/g Testo.txt > nuovofile
[mario@mario mario]$ egrep CACAIO nuovofile
outlook: Un CACAIO di newsreader
-- 
Ciao, Mario.
http://digilander.iol.it/mccmario/

 si puo`.
Con Linux si puo' _tutto_
==
#!/bin/bash/
for i in *html; do
	cp $i $i.bak
	sed s/Pardo/$1/g $i.bak > $i
done
==
E ti  ritrovi i files con  la stringa "Pardo" sostituita  con quella che
passi  al  comando. Ah, i  files  originali  sono stati  rinominati  con
l'estensione .bak
-- 
                                                                     __
 __                                                              _  ///
| _        Student in Computer Science, Swiss Federal Institute  \\///
|__|iambo      of Technology - mailto:
ggia...@iiic.ethz.ch
       \X/

done
e se i files si trovaressero in piu' sottodirectory ?
(tipico, no ?)
io uso un
find . -name "*html" -print -exec grep stringa {} \;
per trovarle.
si potrebbe sostituire il grep col sed ?
ma... la cosa piu' importante...
non riesco a parametrizzare quel comando in questo modo
find . -name "$1" -print -exec grep $2 {} \;
non va; dopo il primo html cambia directory.
(magari fatto col sed)
Approfitto del  mo-man-to  :-)
Robi
--
====================
robxn...@katamail.com
x  =  i
====================

SO che si puo`.
puoi usare il perl!
è ottimo per queste cose.
#!/usr/bin/perl -w
open(FILE1,"<nomefile-in-lettura") or die "\nErrore";
open(FILE2,">nomefile-in-scrittura") or die "\nErrore";
while($riga=<FILE1>){
	$riga=~s/PISELLI/fagioli/g;
	pritn FILE2 $riga;
}
clodr FILE1;
close FILE2;

 find . -name "$1" -print -exec grep $2 {} \;
Forse perche' il $1 e' racchiuso tra doppi apici ? Non lo so ...


Ok ha funzionato, grazie...
Pero` ho dei problemi con i caratteri `><' degli html.
Sed mi spara dei gran errori se gli dico di sostituire qualcosa con dei
tags (dovevo sostiture una semplice parola con un link).
-- 
    Pardo 
 
www.pardo.cjb.net

 Forse perche' il $1 e' racchiuso tra doppi apici ? Non lo so ...
I doppi apici ci vanno *SEMPRE*, in ogni script, ovunque & comunque. ;-)
Probabilmente non funziona come vorrebbe perche` chissa` come lo usa
da command line.
Il corretto modo di esecuzione sarebbe: comando '*html' e NON comando *html
Gli apici *singoli* sono importanti (oppure un escape \ prima dell'*).
-- 
Cinereview: Cast Away: regge bene le due ore e venti, Hanks   _/Davide\_
bravo ma non al massimo. Ritorna il muto! ;-)        Voto: 8- \Alberani/
Per contattarmi: 
http://digilander.iol.it/alberanid/

 Probabilmente modificavi $IFS.
Giusto ! Denghiu' !


Forse perche' il $1 e' racchiuso tra doppi apici ? Non lo so ...
O forse perche' bisogna proteggere anche le graffe (info find)
-- 
           |Save our planet!
  Ciao     |Save wildlife;
  roberto  |For your E-MAIL use only recycled Bytes !!
           |roberto poggi  
rpo...@softhome.net