Jak używać Sed w systemie Linux do podstawowych zadań powłoki

Sed Basics 00 Featured Image

Sed to prosty program uniksowy. Nie tworzy i nie edytuje plików. Modyfikuje tylko dane, które przechodzą przez jego wejście i prezentuje zmodyfikowane dane na swoim wyjściu. Mimo to sed jest uważany za jedno z najpotężniejszych narzędzi UNIX, jakie napotkasz w Linuksie, zwłaszcza gdy jest on połączony z innymi programami w twoim systemie.

Ten artykuł ma na celu nauczenie podstaw korzystania z tego małego programu. Ponadto zawiera krótki przegląd Filozofia UNIX i jak ten pomysł jest ważny dla zrozumienia, jak działa twój komputer.

Czym jest filozofia UNIX?

Filozofia UNIX to idea, że ​​program powinien wykonywać tylko jedno zadanie i robić to dobrze. Zachęca do pisania prostych programów, które można ponownie wykorzystać do różnych funkcji, zamiast tworzyć złożone programy, których nie można ponownie wykorzystać do innych zadań.

Dobrym tego przykładem jest program cat. Jest to proste narzędzie, które pobiera tylko dane wejściowe i drukuje je jako strumień tekstu.

Sed Basics 03 Próbka kota 2

Filozofia UNIX pozwala na używanie programu w połączeniu z innymi narzędziami w systemie. Z kolei to podejście ostatecznie tworzy pojedynczy interfejs dla twojego systemu, którego możesz się nauczyć raz i ponownie wykorzystać w różnych kontekstach.

Na przykład możesz przesłać strumień kota do programu takiego jak grep. Jest to prosty program, który robi tylko jedną rzecz. Szuka ciągu tekstu w danych wejściowych i drukuje wiersze, w których pojawia się ten tekst.

Sed Basics 04 Próbka fajki Grep

Z drugiej strony możesz zamiast tego karmić ten sam strumień kota do pager ekranu Jak na przykład less. To z kolei pozwoli Ci przewijać strumień tak, jakby był to pojedynczy plik tekstowy.

Sed Basics 05 Mniej próbki fajki

Jak działa Sed?

Mając to na uwadze, sed to program, który czyta strumień tekstu i modyfikuje go. Jednak sed modyfikuje tylko strumień tekstu, co oznacza, że ​​nie zmienia bezpośrednio plików na twoim komputerze. Może to być mylące dla początkującego, ponieważ wszelkie zmiany wprowadzone w sed nie pojawią się na dysku.

Mimo to sed jest wciąż potężnym narzędziem. Na przykład możesz uruchomić następującą linię, aby odczytać dane wyjściowe funkcji printf Komenda:

Podstawy Sed 08 Polecenie odczytu Sed

Podstawy używania Sed

Wiedząc o tym, niezwykle łatwo jest używać seda do podstawowych zadań. Rozważmy następujący przykład:

Sed Basics 09 Przeczytaj plik

W tym użyłem n polecenie, aby wydrukować zawartość pliku „hello”.

1. Wybieranie i przycinanie strumieni tekstu

Co więcej, możesz również polecić sedowi zmodyfikowanie tego strumienia tekstu. Na przykład możesz użyć 2q polecenie, aby wypisał tylko pierwsze dwa wiersze pliku „hello”:

Sed Basics 10 Drukuj pierwsze wiersze 1

Może to być niezwykle pomocne, jeśli chcesz uzyskać tylko kilka pierwszych wierszy pliku tekstowego. Możesz jednak również użyć p polecenie, aby nakazać sedowi drukowanie tylko zakresu wierszy w pliku.

Sed Basics 11 Drukuj linie środkowe

W powyższym przykładzie użyłem sed do wydrukowania trzeciego i czwartego wiersza pliku „hello”. Możesz również użyć tego samego p polecenie, aby wydrukować niesąsiadujące wiersze w pliku tekstowym. Rozważmy następujący przykład:

Sed Basics 12 Drukuj nieprzylegające linie

W związku z tym mówię sedowi, aby wydrukował tylko pierwszą i czwartą linię pliku „hello”. Może się to przydać, jeśli chcesz połączyć wiele linii z różnych strumieni w jeden plik.

Czytać  Jak korzystać z IRC w Emacsie z ERC?

Na przykład możesz użyć sed z > operatora, aby zapisać zmodyfikowany strumień do pliku.

Sed Basics 13 Zapisz nieprzylegające wiersze do pliku

2. Usuwanie tekstu

Kolejną świetną funkcją sed jest usuwanie tekstu ze strumienia. W przeciwieństwie do drukowania, pozwala to wybrać wiersze tekstu, które sed ma pominąć w strumieniu.

Na przykład użyłem d polecenie, aby usunąć drugą i piątą linię pliku hello.

Sed Basics 14 Usuń wiersze

Jedną z zalet korzystania z tego zamiast p polecenie polega na tym, że pozwala to usunąć tylko wiersz, którego nie chcesz. Jest to przydatne, jeśli chcesz wyczyścić duży plik lub przyciąć dane wyjściowe, aby wyświetlić tylko potrzebne informacje.

3. Dodawanie nowego tekstu

Dzięki temu możesz również użyć sed z samym sobą, aby włączyć nowe dane do strumienia tekstowego. Na przykład możesz użyć a polecenie, aby dołączyć wiersz tekstu do bieżącego strumienia:

Sed Basics 15 Dodaj linie

Ponadto możliwe jest również włączenie całych plików do strumienia tekstowego. W tym celu możesz użyć r polecenie, które pozwoli ci wczytać pojedynczy plik do twojego bieżącego strumienia. Aby to zrobić, możesz uruchomić następujące polecenie, aby dołączyć plik powitalny po drugim wierszu powitania.

Sed Basics 16 Dodaj plik do wiersza

4. Podstawianie tekstu i manipulacja strumieniem

Jednym z genialnych zastosowań sed jest modyfikowanie istniejących strumieni. Dzieje się tak, gdy bierzesz strumień wprowadzania tekstu i używasz wbudowanych funkcji sed do zmiany zawartości strumienia.

Jest to prawdopodobnie najpotężniejsza funkcja sed. Ponieważ daje to możliwość dynamicznej edycji danych przechodzących przez rury. Na przykład, możesz łatwo edytować wyjście programu tak, jakby był to plik tekstowy:

Podstawy Sed 17 Modyfikuj wyjście poleceń

W tym przykładzie użyłem s polecenie, aby zastąpić słowo „świat” słowem „strona internetowa”. Jednak w przeciwieństwie do poprzednich poleceń, to polecenie używa określonej składni, aby działać poprawnie.

Wiedząc o tym, ogólna forma s polecenie wygląda mniej więcej tak:

  • Pierwsza kolumna wskazuje, że jest to polecenie zastępujące. W większości przypadków wystarczy użyć s polecenie, aby zmodyfikować strumień tekstowy.
  • Druga kolumna wskazuje słowo, które chcesz zastąpić, używając strukturalnych wyrażeń regularnych. Jest to sposób opisywania słów i gramatyki przy użyciu ogólnych zasad. Na przykład możesz opisać słowa „odbitki”, „książę” i „podkład” pisząc pri[n,m]...
  • Trzecia kolumna opisuje słowo, które ma być starym ciągiem. W przeciwieństwie do poprzedniej kolumny, ta kolumna nie używa wyrażeń regularnych. Zamiast tego możesz opisać swoje nowe słowo zwykłym tekstem.
  • Ostatnia kolumna mówi sedowi, aby zastosował wszelkie dodatkowe opcje potrzebne do zamiany. W tym przypadku najczęstszą flagą, której możesz chcieć użyć, jest g. Oznacza to, że polecenie zastąpi każde wystąpienie wyrażenia regularnego nowym ciągiem.

5. Korzystanie z zastępowania tekstu w plikach

Możesz zastosować s polecenie do manipulowania dowolnym rodzajem strumienia tekstu, który chcesz. Jest to przydatne nie tylko dlatego, że pozwala modyfikować dane w locie, ale także dlatego, że możesz tego używać z prawie wszystkim w wierszu poleceń systemu Linux.

Czytać  Porównanie AlmaLinux z CentOS: czy AlmaLinux sprosta wyzwaniu?

Na przykład możesz użyć s polecenie z plikiem tekstowym poprzez dodanie nazwy pliku na końcu polecenia:

Sed Basics 18 Modyfikuj plik Pojedyncze słowo

W tym miejscu mówię sedowi, aby przeczytał plik „hello” i zamienił pierwsze wystąpienie słowa „hello” na „welcome”. Mogę to zrobić dla każdego wystąpienia słowa „hello” w pliku, dodając g opcja:

Sed Basics 19 Modyfikuj plik Wszystkie słowa

Często Zadawane Pytania

Czy za pomocą sed można napisać modyfikacje do pliku?

Tak! Oprócz używania operatorów plików, możliwe jest użycie seda do bezpośredniego zapisania dowolnego zmodyfikowanego strumienia tekstu do pliku. Aby to zrobić, możesz użyć sed z -i oflaguj lub użyj w polecenie, aby zapisać strumień do pliku.

Należy jednak zauważyć, że te polecenia nie są zgodne ze standardem POSIX. Oznacza to, że nie będą one działać, jeśli używasz seda w wersji innej niż GNU.

Za każdym razem, gdy używam sed, otrzymuję komunikat „nieprzerwany”. Czy moja instalacja jest zepsuta?

Zupełnie nie! Jest to problem, który występuje, gdy nie piszesz poprawnie polecenia sed. Jest to powszechne w przypadku poleceń podstawiania, w których próbujesz dopasować lub zastąpić ciąg spacjami.

Na przykład uruchomienie następującego polecenia spowoduje błąd „niezakończony”: sed s/hello/welcome back/g hello.txt.

Możesz to naprawić, dodając znak ucieczki „\” przed spacją. Jest to znak specjalny, który mówi sedowi, aby uwzględniał spację podczas wyszukiwania lub zastępowania tekstu.

Dzięki temu poprawna wersja powyższego polecenia wygląda mniej więcej tak: sed s/hello/welcome\ back/g hello.txt.

Czy oprócz „g” są inne flagi, których mogę używać z poleceniem „s”?

Tak! Oprócz gmożesz również użyć p flaga informująca sed o wyświetlaniu zmodyfikowanych linii.

Kolejna flaga, której możesz użyć s jest e. Pozwala to na uruchamianie poleceń powłoki za każdym razem, gdy sed zastępuje słowo. Na przykład możesz uruchomić następujące polecenie, aby uruchomić touch za każdym razem, gdy znajdzie w pliku słowo „hello”: sed s/hello\ /touch\ /e hello.txt.

Na koniec możesz również użyć i flaga informująca seda, aby nie rozróżniał wielkości liter podczas wyszukiwania dopasowań. Jest to przydatne, jeśli chcesz dopasować to samo słowo, ale z różnymi stylami wielkości liter. Na przykład następujące polecenie zastąpi słowo „hello” słowem „welcome” niezależnie od jego wielkości: sed s/HELLO/welcome/i hello.txt.

Jeśli cała ta rozmowa zainteresowała Cię wierszem poleceń Linuksa. Możesz przeczytać nasz wcześniejszy artykuł, w którym omawiamy niektóre z najciekawszych podpowiedzi Bash, z których możesz korzystać dzisiaj.

Kredyt obrazu: Unsplash

Czy ten artykuł jest przydatny?

Zapisz się do naszego newslettera!

Nasze najnowsze samouczki dostarczane prosto do Twojej skrzynki odbiorczej