Po prostu chcę przeczytać w pliku dziennika, zrobić wyszukiwanie i zamiana, a następnie zapisać zmiany w tym samym pliku dziennika.Perl: Pętla przez plik i podstawienie
Jaki jest najlepszy sposób na zrobienie tego w Perlu?
Po prostu chcę przeczytać w pliku dziennika, zrobić wyszukiwanie i zamiana, a następnie zapisać zmiany w tym samym pliku dziennika.Perl: Pętla przez plik i podstawienie
Jaki jest najlepszy sposób na zrobienie tego w Perlu?
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>
lub użyć sed
(wiem ... pytasz o Perl):
sed -i 's/find/replace/g' <file>
Sposób, w jaki sed radzi sobie z regułami wyrażeń regularnych, jest ... inny niż Perla, delikatnie mówiąc. – GJTorikian
Ale dlaczego nie mogę korzystać z funkcji backreferances? Podobnie jak perl -pi -e "s/foo (. *) Pasek/bar $ 1foo /" tezt2 nie działa. –
Twoja powłoka prawdopodobnie uszkadza ciąg znaków. Spróbuj zastąpić twoje "", aby * nie zostało rozwinięte. –
Dzięki, że to zrobili! –