2009-06-01 7 views

Odpowiedz

9

normalnie zakodować górę jedną wkładkę dla tego:

perl -i -pe 's/some/thing/' log.file 

Zobacz Here

+0

Ale dlaczego nie mogę korzystać z funkcji backreferances? Podobnie jak perl -pi -e "s/foo (. *) Pasek/bar $ 1foo /" tezt2 nie działa. –

+2

Twoja powłoka prawdopodobnie uszkadza ciąg znaków. Spróbuj zastąpić twoje "", aby * nie zostało rozwinięte. –

+0

Dzięki, że to zrobili! –

8

Często jest to zrobić z jedną wkładką:

perl -pi.bak -e "s/find/replace/g" <file> 

Uwaga część -i.bak - spowoduje to utworzenie pliku kopii zapasowej o rozszerzeniu .bak. Jeśli chcesz grać bez siatki można to zrobić, aby zastąpić istniejący plik bez kopii zapasowej:

perl -pi -e "s/find/replace/g" <file> 
1

lub użyć sed (wiem ... pytasz o Perl):

sed -i 's/find/replace/g' <file> 
+0

Sposób, w jaki sed radzi sobie z regułami wyrażeń regularnych, jest ... inny niż Perla, delikatnie mówiąc. – GJTorikian