Jeśli musisz w jednym pliku zastąpić wszystkie wystąpienia danego ciągu znaków, to z pomocą przychodzą już porządne edytory tekstu, które pozwalają bez problemu na taką operację. Co jednak jeśli posiadasz wiele plików (powiedzmy 100), do tego rozmieszczonych w różnych podkatalogach, gdzie musisz zastąpić wszystkie wystąpienia danego ciągu znaków, bo np. popełniłeś ten sam błąd, o którym sprawę zdałeś sobie dopiero teraz?
Pomocny w takim momencie będzie BASH, Grep oraz jakiś język skryptowy (np. perl)... no to do dzieła:
grepem najpierw wyszukujemy rekurencyjnie (w podkatalogach) wszystkich plików, w których występuje dany ciąg znaków (wtedy linijka w perlu ma mniej do roboty), następnie podanym kodem zamieniamy wszystkie wystąpienia na nowy ciąg znaków, np:
Jeśli chcesz przekopiować podany wyżej kod, to usuń znak zachęty "$" dolara.
Pomocny w takim momencie będzie BASH, Grep oraz jakiś język skryptowy (np. perl)... no to do dzieła:
$ grep -rl STARY_STRING . | xargs perl -pi~ -e 's/STARY_STRING/NOWY_STRING/'
grepem najpierw wyszukujemy rekurencyjnie (w podkatalogach) wszystkich plików, w których występuje dany ciąg znaków (wtedy linijka w perlu ma mniej do roboty), następnie podanym kodem zamieniamy wszystkie wystąpienia na nowy ciąg znaków, np:
$ grep -rl '%22' . | xargs perl -pi~ -e 's/'%22'/''/'
Jeśli chcesz przekopiować podany wyżej kod, to usuń znak zachęty "$" dolara.
Komentarze
Prześlij komentarz