Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    Trova e sostituisci ricorsivo

    Ho trovato questo script bash nel forum
    codice:
    #!/bin/bash
    for file in `ls *.txt`; do
      cat $file | sed -e 's/prima/dopo/g' > $file
    done
    Però praticamente mi cancella tutto il contenuto dei file anzike fare un trova e sostituisci, perchè?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    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

  3. #3
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    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
    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?

  4. #4
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345

    Re: Trova e sostituisci ricorsivo

    Originariamente inviato da james
    Ho trovato questo script bash nel forum
    codice:
    #!/bin/bash
    for file in `ls *.txt`; do
      cat $file | sed -e 's/prima/dopo/g' > $file
    done
    Però praticamente mi cancella tutto il contenuto dei file anzike fare un trova e sostituisci, perchè?
    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

  5. #5
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    Re: Re: Trova e sostituisci ricorsivo

    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!

  6. #6
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    giusto per completezza:
    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    ***
    Per sicurezza provarlo prima su una directory di test.

    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!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    7,691
    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

  8. #8
    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 ?

    grazie
    codice:
    cat pippo.txt | sed -e 's/Filippo/Antonio/g' > file_temp
    mv file_temp pippo.txt
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.