Mam duży plik tekstowy (około 2 GB). Chcę wykonać pięć operacji wyszukiwania i zamiany w tym samym pliku i chciałbym to zrobić w jednym poleceniu. Zwykle używam vima, otwieram plik, wykonuję jedną akcję zamiany, potem następną itd. Jest jeden haczyk, ponieważ zauważyłem, że po trzech lub czterech wyszukiwaniach vim ulega awarii z powodu problemów z pamięcią.
Oto dwa przykłady polecenia, którego używam w Vimie:
:%s/www\.abcdef/www.test.abcdef/g
:%s/www\.klmnop/www.test.klmnop/g
Jaki jest najlepszy sposób, aby sobie z tym poradzić?
linux
vim
sed
find-and-replace
SPRBRN
źródło
źródło
sed
. Próbowałem i to działa. W Unix i Linuxie Stackexchange jest dobry wątek , a zaakceptowana odpowiedź nie wymienia kropek jako znaków do ucieczki.Jeśli masz wiele innych wzorców wyszukiwania, możesz zapisać je w pliku i odczytać z niego podstawienia. Powiedzmy, że są to
replacements.txt
:Następnie możesz przeczytać listę N zamienników i zastąpić je następującymi:
UWAGI:
replacements.txt
.sed
na wymianę, co może zająć trochę czasu, jeśli wykonujesz wiele operacji wymiany.Inną opcją byłoby napisanie powyższego jako
sed
skryptu:Następnie możesz uruchomić skrypt na swoim pliku, a wszystkie zmiany zostaną wykonane za jednym razem:
źródło