Próbuję użyć sed do edycji pliku konfiguracyjnego. Jest kilka linii, które chciałbym zmienić. Wiem, że pod Linuksem sed -i
pozwala na wprowadzanie zmian w miejscu, ale wymaga zapisania w pliku kopii zapasowej. Chciałbym jednak uniknąć posiadania wielu plików kopii zapasowych i wprowadzić wszystkie moje zmiany w jednym miejscu.
Czy istnieje sposób, aby to zrobić, sed -i
czy istnieje lepsza alternatywa?
a
są zamienianeb
, a następnie wszystkie wystąpieniab
są przekształcane wd
. Można zrobić to samo zsed -i -e 's/a\|b/d/g' file
-Skręć wszystkich wystąpień alboa
czyb
językd
.Inną alternatywą jest
ex
poprzednikvi
. To jest rzeczywiście narzędzie POSIX z wyboru w miejscu skryptów edycji plików; jest wyjątkowo elastyczny i przenośniejszy niż Perl. (Jeśli pozostaniesz poza światem Windows, jest bez wątpienia bardziej przenośny niż Perl.)sed -i
Istnieje względny brak w tym Stack Exchange Network przykładowych poleceń za pomocą
ex
, przynajmniej w porównaniu z nadmiarem przykład poleceniachsed
,awk
oraz Perl. Jednak sam zagłębiłem się w specyfikacje POSIXex
i od tego czasu biję w tym celu bęben. Napisałem wiele odpowiedzi, używającex
zarówno tutaj, jak i na stosie vi / Vim:Dalsza lektura:
źródło
Oprócz korzystania z wielu
-e
opcji, możesz także rozdzielić polecenia sed w jednym skrypcie sed, używając znaków nowej linii lub średników.Jest tak w przypadku, gdy ten skrypt jest jednowierszowy w wierszu poleceń, czy plik skryptu.
na przykład
Znaki spacji wokół
;
są opcjonalne. Użyłem ich tutaj, aby upewnić się, że średnik wyróżnia się (ogólnie, z wyjątkiem znaków oddzielających wiersze, białe znaki między poleceniami są ignorowane ... ale nie zapominaj, że białe znaki w poleceniach mogą być i zwykle są znaczący).lub:
źródło