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