GNU/Linux >> Linux Esercitazione >  >> Linux

Prova la ricerca ricorsiva di Sed e sostituisci prima di correre?

Esiste un modo per eseguire una ricerca ricorsiva di prova e sostituirla utilizzando sed , prima di eseguirlo effettivamente? Voglio solo stampare i risultati prima di eseguire effettivamente la ricerca e la sostituzione. Qualcosa come l'eco dei risultati di,

grep -rl term1 . |xargs sed -i -e 's/term1/term2/'

Risposta accettata:

Potresti eseguire sed senza -i e scorrere l'output con less

grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less

Quindi esegui sed con -i.bak per creare backup che potrai modificare in seguito

grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct

Modifica: Come suggerito nel commento, usa grep --null | xargs -0 . Ciò fa sì che i nomi di file vengano terminati dal byte null, il che rende sicuro per i nomi di file con caratteri insoliti come newline. Sì, n è un carattere valido in un nome file unix. Gli unici caratteri vietati sono la barra / e il carattere nullo

Linux
  1. Utilizzo di Sed per cercare e sostituire una linea tra intervalli di pattern

  2. Taglia / Grep e Df -h?

  3. Elenca i nomi dei file in base a un modello di nome file e al contenuto del file?

  4. Utilizzo di grep e sed per trovare e sostituire una stringa

  5. Trova e sostituisci con sed nella directory e nelle sottodirectory

Come utilizzare sed per trovare e sostituire la stringa nei file

Manipolazione del testo con sed e grep

Come trovare e sostituire testo, parola o stringa in un file

Cerca e sostituisci MySQL

Come eseguire la ricerca Grep su tutti i file e in tutte le directory

Come utilizzare Sed per trovare e sostituire una stringa in un file