Polecenia systemu Linux i umiejętności powłoki
sed: Edycja strumieni bez otwierania edytora
sed edytuj na boki: całe strumienie tekstu przechodzą przez niego, wychodzą przemienione i żaden edytor nie otwiera się. Jego reputacja wywodzi się z opcji -i, która zamienia jednoliniowe podstawienie w operację wsadową na tysiącach plików, oraz z historii o katastrofach administratorów, którzy uruchomili ją bez sufiksu kopii zapasowej. Bezpieczny przepływ pracy nigdy się nie zmienia: uruchom podstawienie widoczne, potwierdź wynik, następnie dodaj -i z przyrostkiem i zachowaj kod wyjścia.
Kluczowe punkty
- Podgląd przed zatwierdzeniem: sed -n Plik '10,20p' pokazuje zakres linii, a ta sama kombinacja -n plus p wyświetla tylko linie pasujące do wyrażenia regularnego lub adresu.
- Zastąp flagami, które robią to, co masz na myśli: s/old/new/g dla wszystkich dopasowań, liczba taka jak 2g tylko dla sekundy i -E dla rozszerzonego wyrażenia regularnego bez strony z ukośnikami odwrotnymi.
- Zmiany lokalne otrzymują sufiks, bez wyjątków: aplikacja sed -i.bak/http:/https:/g' przechowuje kopię zapasową o tej samej nazwie przy każdej zmianie; ten przyrostek uratował więcej wdrożeń niż historia cofania dowolnego edytora.
- Ograniczniki są bezpłatne: s|/var/www|/srv/app|g (lub s#...#g) pozwala uniknąć walk z ukośnikami, gdy wzór jest pełen ścieżek.
- -i nie jest atomowe: awaria lub złe wyrażenie regularne w połowie partii po pozostawieniu częściowo przepisanych plików, więc zadania masowe działają na kopiach lub drzewach śledzonych przez git, nigdy na jedynej kopii.
- GNU i BSD sed nie zgadzają się co do -i: BSD wymaga przyrostka przed skryptem (sed -i '' działa na macOS, nie jest składnią Linuksa), co jest kolejnym powodem, dla którego skrypty przenośności całkowicie unikają -i.
- Usuń i izoluj to czasowniki uczciwe: „d” usuwa pasujące linie (sed „/^#/d” usuwa komentarze), a -n z zakresem izoluje sekcję; oba czytają się lepiej niż sprytne podstawienia.
- Wszystko, co wykracza poza edycję pojedynczej linii, dosłowne bloki wieloliniowe lub łączenia stanowe, należy do awk lub prawdziwego skryptu; zmuszanie sed'a do pracy programistycznej jest przyczyną powstawania nieczytelnych jednowierszówek.
Notatka z praktyki
Mój pierwszy sed -i bez przyrostka .bak trafił do produkcyjnej konfiguracji Nginx tuż przed popołudniowym szczytem ruchu. Od tego czasu każda edycja lokalna ma sufiks kopii zapasowej i czytam wynik działania próbnego, zanim opcja -i w ogóle zbliży się do polecenia.
Częste pytania
Jak edytować tylko linie, które pasują do czegoś innego?
Zajmij się nimi: sed '/cache/s/true/false/' zamienia prawdę na fałsz tylko w liniach pamięci podręcznej i zakresach takich jak '/<VirtualHost>/,/<\/VirtualHost>/s/Old/New/g' edytuje zakres bloków; adres jest pierwszy, polecenie drugie.
Dlaczego sed nie dopasuje końcówek linii w pliku edytowanym w systemie Windows?
Te linie kończą się znakami powrotu karetki, których nie oczekują kotwice '$'; usuń je najpierw za pomocą tr lub normalizuj po drodze, a zawartość wielowierszowa nadal należy do awk lub Perla z -0777.
Czy sed jest szybszy niż awk w przypadku prostych zamienników?
Marginalnie i nieistotnie; oba kończą się w milisekundach na plikach o rozmiarze konfiguracyjnym. Wybieraj kierując się czytelnością, ponieważ kolega musi rozebrać Twój tekst w ciągu sześciu miesięcy.
Czy mogę wstawić całe bloki konfiguracyjne za pomocą sed?
Tak: „a” dodaje się po, „i” wstawia przed, a „c” zastępuje wiersz, ale wstawiany tekst powinien być prosty i jednoznaczny; prawdziwe bloki należą do pliku szablonu lub odpowiedniego etapu udostępniania.
Jak Kinetikatech pomaga w polecenia systemu linux i umiejętności powłoki
Nie muszą Państwo stawać się ekspertami od polecenia systemu linux i umiejętności powłoki: Polecenia i nawyki związane z tworzeniem skryptów, które decydują o tym, czy administrator obsługuje serwer, czy z nim walczy: przeszukuje, przekształca, przesyła i nadzoruje tekst i procesy za pomocą narzędzi znajdujących się w każdej podstawowej instalacji. Dokładnie do tego służy Bezpieczeństwo serwerów Linux i Zarządzanie serwerami: konfiguracja, hardening, monitoring oraz inżynier dyżurny dzień i noc.