Voglio semplicemente leggere in un file di registro, fare una ricerca e sostituirlo e quindi scrivere le modifiche allo stesso file di registro.Perl: passa attraverso un file e sostituisce
Qual è il modo migliore di farlo in Perl?
Voglio semplicemente leggere in un file di registro, fare una ricerca e sostituirlo e quindi scrivere le modifiche allo stesso file di registro.Perl: passa attraverso un file e sostituisce
Qual è il modo migliore di farlo in Perl?
Io di solito codificare fino a uno di linea per questo:
perl -i -pe 's/some/thing/' log.file
Vedi Here
Questo spesso è fatto con una battuta:
perl -pi.bak -e "s/find/replace/g" <file>
nota la porzione -i.bak
- questo crea un file di backup con l'estensione .bak
. Se si vuole giocare senza rete si può fare questo per sovrascrivere il file esistente senza un backup:
perl -pi -e "s/find/replace/g" <file>
oppure è possibile utilizzare sed
(lo so ... hai chiesto di perl):
sed -i 's/find/replace/g' <file>
Il modo in cui sed gestisce le regole di espressione regolare sono ... diverse, a dir poco, di Perl. – GJTorikian
Ma perché non posso usare le retrocedenze? Come perl -pi -e "s/foo (. *) Bar/bar $ 1foo /" tezt2 non funziona .. –
Probabilmente la shell sta corrompendo la stringa. Prova a sostituire i tuoi "" con "in modo che * non venga espanso. –
Grazie per averlo fatto! –