„W ekosystemie Unix/Linux polecenie SED jest dedykowanym narzędziem do edycji strumieni, stąd nazwa (Edytor strumienia). Otrzymuje dane wejściowe tekstu jako „strumienie” i wykonuje określone operacje w strumieniu."
W tym przewodniku zbadamy wykonanie edycji plików na miejscu za pomocą SED.
Wymagania wstępne
Aby wykonać kroki wykazane w tym przewodniku, potrzebujesz następujących komponentów:
Edycja strumienia za pomocą SED
Najpierw rzućmy okiem na to, jak działa SED. Struktura dowodzenia SED jest następująca:
$ sed
Poniższe polecenie pokazuje prosty przepływ pracy SED:
$ echo „The Quick Brown Fox” | sed -e 's/szybki/fast/'
Tutaj,
Co jeśli chcielibyśmy zmodyfikować teksty pliku tekstowego? Polecenie SED może również działać za pomocą plików tekstowych jako strumienia. Do demonstracji złapałem następujący plik tekstowy:
Demo $ CAT.tekst
Następujące polecenie SED zastąpi wszystkie instancje z da:
$ sed -e 's/the/da/g demo.tekst
Sprawdź zawartość próbny.tekst W przypadku zmian:
Demo $ CAT.tekst
Z ostatniego przykładu widzimy, że SED wydrukował tylko wynikowy strumień na konsoli. Plik źródłowy (próbny.tekst) nie był dotknięty.
Edycja plików na miejscu za pomocą SED
Jak pokazano z poprzedniego przykładu, domyślną działaniem SED jest wydrukowanie zmienionej zawartości na ekranie. To świetna funkcja, która może zapobiec przypadkowym zmianom plików. Jeśli jednak chcieliśmy zapisać zmiany w pliku, musieliśmy podać dodatkowe opcje.
Prostą i powszechną techniką byłoby zastąpienie zawartości pliku sed wyjście. Spójrz na następujące polecenie:
Demo $ CAT.txt | sed 's/the/da/g' | Demo koszulki.tekst
Tutaj zastępujemy zawartość próbny.tekst z wyjściem z sed Komenda.
Chociaż polecenie działa zgodnie z zamierzonymi, wymaga wpisania dodatkowych kodów. Dotyczyliśmy poleceń kota i tee wraz z poleceniem SED. Bash bierze również udział w przekierowaniu wyjść. Zatem polecenie jest bardziej wymagające od zasobów niż musi być.
Aby to rozwiązać, możemy użyć funkcji edycji na miejscu SED. W tym trybie, sed Zmieni bezpośrednio zawartość pliku. Aby wywołać tryb edycji w miejscu, musimy użyć -I Lub -w miejscu flaga. Następujące sed Polecenie to implementuje:
$ sed - -in -miejscu -e 's/the/da/g' demo.tekst
Sprawdzać próbny.tekst W przypadku zmian:
Demo $ CAT.tekst
Jak widać, zawartość pliku jest zmieniana bez dodawania dodatkowych komponentów.
Końcowe przemyślenia
W tym przewodniku z powodzeniem zademonstrowaliśmy wykonywanie edycji na miejscu na plikach tekstowych za pomocą sed. Podczas gdy sam SED jest prostym programem, głównym źródłem mocy jest jego zdolność do włączania wyrażeń regularnych. Regex pozwala na opisanie bardzo złożonych wzorów, które SED działa. Sprawdź Regex w SED, aby dowiedzieć się bardziej szczegółowo.
Alternatywnie możesz użyć skryptów bash do filtrowania i modyfikowania zawartości pliku. W rzeczywistości możesz włączyć SED do swoich skryptów, aby dostroić treść tekstu. Sprawdź ten przewodnik po rozpoczęciu scenariuszy Bash.
Szczęśliwy komputer!