Ho trovato questo script bash nel forum
Però praticamente mi cancella tutto il contenuto dei file anzike fare un trova e sostituisci, perchè?codice:#!/bin/bash for file in `ls *.txt`; do cat $file | sed -e 's/prima/dopo/g' > $file done
Ho trovato questo script bash nel forum
Però praticamente mi cancella tutto il contenuto dei file anzike fare un trova e sostituisci, perchè?codice:#!/bin/bash for file in `ls *.txt`; do cat $file | sed -e 's/prima/dopo/g' > $file done
code:--------------------------------------------------------------------------------#
!/bin/bash
for file in `ls *.txt`; do
cat $file | sed -e 's/prima/dopo/g' > $file
done
--------------------------------------------------------------------------------
prova con
!/bin/bash
for file in `ls *.txt`; do
cat $file | sed -e 's/prima/dopo/g' > tmp$file
mv tmp$file $file
done
non mi svuota più i file ma non funziona la sostituzione, però i files vengono ricreati perchè l'ora di modifica cambia, quindi il mv funziona, dove sbaglio?Originariamente inviato da stabi
code:--------------------------------------------------------------------------------#
!/bin/bash
for file in `ls *.txt`; do
cat $file | sed -e 's/prima/dopo/g' > $file
done
--------------------------------------------------------------------------------
prova con
!/bin/bash
for file in `ls *.txt`; do
cat $file | sed -e 's/prima/dopo/g' > tmp$file
mv tmp$file $file
done
Prova a farlo cosìOriginariamente inviato da james
Ho trovato questo script bash nel forum
Però praticamente mi cancella tutto il contenuto dei file anzike fare un trova e sostituisci, perchè?codice:#!/bin/bash for file in `ls *.txt`; do cat $file | sed -e 's/prima/dopo/g' > $file done
codice:#!/bin/bash for file in `ls *.txt`; do cat "$file" | sed -e 's/prima/dopo/g' > file_temp mv file_temp "$file" done
Originariamente inviato da Ilmalcom
Prova a farlo così
codice:#!/bin/bash for file in `ls *.txt`; do cat "$file" | sed -e 's/prima/dopo/g' > file_temp mv file_temp "$file" done
mille grazie!
giusto per completezza:
Per sicurezza provarlo prima su una directory di test.codice:cat "$file" | sed -e "s/prima/dopo/g;w $file" oppure semplicemente: *** sed -e "s/prima/dopo/g;w $file" $file *** *** non usare, perchè 'svuota' il file ***
man 1 sed.
ciao
[EDIT]
Ho sostituito gli apici singoli (') con quelli doppi (") per permettere l'espansione della variabile.
:rollo:
scusate per i grossolani errori.
slack? smack!
scusate, sono proprio niubbo in queste cose ... mi spiegate il funzionamento per favore ? cosa gli devo passare come input ?
ad es. ho il file pippo.tx, in cui devo sostituire Filippo con Antonio. Come devo lanciarlo ?
grazie
... S'i' fosse Giorgio, com'i' sono e fui,
torrei le donne giovani e leggiadre:
le vecchie e laide lasserei altrui....
Non mandatemi PVT, mi dimentico sempre di leggerli ... mandatemi e-mail, se è il caso
Originariamente inviato da mykol
scusate, sono proprio niubbo in queste cose ... mi spiegate il funzionamento per favore ? cosa gli devo passare come input ?
ad es. ho il file pippo.tx, in cui devo sostituire Filippo con Antonio. Come devo lanciarlo ?
graziecodice:cat pippo.txt | sed -e 's/Filippo/Antonio/g' > file_temp mv file_temp pippo.txt