SED na miejscu edytuj plik

SED na miejscu edytuj plik

„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:

    • Wszelkie nowoczesne dystrybucje Unix/Linux. Do tego przewodnika użyję Ubuntu 20.04 LTS działający na VirtualBox.
    • Odpowiedni emulator końcowy, najlepiej z podświetleniem składni. Sprawdź jedne z najlepszych emulatorów terminali w Linux.

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,

    • Polecenie Echo drukuje ciąg Stdout. Dowiedz się więcej o stdin, stdout i stdderr.
    • Prowadzimy wyjście do sed Tutaj, Stdout jest strumieniem sed które wykonają określone zadanie.
    • sed polecenie, zgodnie z określonymi, będzie szukać dowolnego wystąpienia słowa szybki i zastąp to szybko. Powstały strumień zostanie wydrukowany na konsoli.

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!