▷ Jak korzystać z polecenia SED w systemie Linux - PRZYKŁADY

Linux to system pełen poleceń, w których każde z nich odgrywa zasadniczą rolę w zachowaniu niektórych zadań, niezależnie od tego, czy są to zarządzanie użytkownikami, obiektami czy wsparciem, każde polecenie ma swój udział w systemie Linux, a jedno z tych poleceń to Sed, o którym będziemy rozmawiać w Solvetic w szczegółach.

Co to jest polecenie sed w Linuksie?Polecenie sed jest dosłownie edytorem przepływu, którego możemy używać do modyfikowania prac na tekście za pomocą podstawowych funkcji w przepływie wejściowym z pliku lub danych wejściowych z potoku, jeśli ma to zastosowanie.

W przeciwieństwie do innych edytorów tekstu, sed umożliwia filtrowanie tekstu w potoku podczas przeglądania wybranej treści.

KorzyśćZalety korzystania z seda w systemie Linux to:

  • Możemy zaznaczyć tekst
  • Jesteśmy w stanie podmienić tekst
  • Dodaj linie do tekstu
  • Możemy usunąć linie z tekstu
  • Pozwala modyfikować lub zachować oryginalny plik

Ogólna składnia używania sed jest następująca:

 sed OPCJE… [SKRYPT] [PLIK_WEJŚCIOWY…]
Nauczymy się kilku sposobów korzystania z tego polecenia w systemie Linux.

1. Jak korzystać z polecenia SED w systemie Linux

Podstawowe zastosowanie sedW tym przykładzie użyjemy "echo", aby zobaczyć, jak polecenie sed może zastąpić część wprowadzonego tekstu, wpisujemy:

 echo solvitic | sed 's / vitic / vetic /'
W tym przypadku mówimy sedowi, aby zamienił słowo „vitic” na „vetic”, po naciśnięciu klawisza Enter będzie to wynik:

POWIĘKSZAĆ

Widzimy, że zmiana jest automatyczna.

2. Zaznaczanie tekstu poleceniem SED Linux

Krok 1
W tym przypadku będziemy mieli plik tekstowy, który znajduje się na pulpicie:

POWIĘKSZAĆ

Teraz użyjemy następującej linii:

 mniej Solvetic.txt
Krok 2
Po naciśnięciu Enter będzie to wynik:

POWIĘKSZAĆ

Za pomocą sed można wybrać niektóre wiersze pliku, w tym celu musimy wskazać początkowe i końcowe wiersze zakresu do wybrania, na przykład, jeśli chcemy wyodrębnić wiersze od dwóch do siedmiu, wykonujemy:

 sed -n '2,7p' Solvetic.txt
Krok 3
Zobaczymy:

POWIĘKSZAĆ

Musimy pamiętać o przecinku w zakresach do przypisania (2,7), parametr p wskazuje, że oznacza "wydrukuj pasujące linie", dzięki temu polecenie sed wypisze wszystkie linie z tego zakresu, a -n (cicho ) opcja dba o to, aby nie wyświetlać tekstu, który nie pasuje do tego zakresu.

Krok 4
Możemy użyć parametru -e (wyrażenie), aby dokonać wielokrotnego wyboru, na przykład:

 sed -n -e '1,2p' -e '5,6p' Solvetic.txt

POWIĘKSZAĆ

Krok 5
W sed można wybrać linię początkową, następnie wskazujemy, przez którą z pliku należy przejść i drukujemy linie alternatywne, np. wpisujemy:

 sed -n '1 ~ 3p' Solvetic.txt
W tym przypadku pierwsza liczba odnosi się do linii startu, a druga wskazuje sedowi, które linie za linią startu będą wyświetlane:

POWIĘKSZAĆ

Krok 6
Innym zastosowaniem sed jest możliwość wybrania wierszy, w których znajdują się pasujące wzorce tekstowe, to jeśli nie wiemy, skąd pochodzi numer wiersza, możemy wykonać następujące czynności:

 sed -n '/ Uruchom / p' Solvetic.txt

POWIĘKSZAĆ

Zobaczymy linie rozpoczynające się tym terminem.

3. Jak tworzyć zamienniki za pomocą SED Linux

Krok 1
W podstawowej części zobaczyliśmy jak podmienić tekst za pomocą sed, tam użyliśmy parametru -s (podstawienie). Wtedy pierwszy ciąg wskazuje wzorzec wyszukiwania, a drugi odnosi się do tekstu, którym ma zostać zastąpiony.

 sed -n 's / zadania / akcje / p' Solvetic.txt 
W tym przykładzie zastępujemy „zadania” „działaniami”:

POWIĘKSZAĆ

Krok 2
Z parametrem p sed zatrzymuje się automatycznie po pierwszym dopasowaniu, aby przeprowadzić globalne wyszukiwanie i ogólnie dokonać zmiany musimy dodać "g":

 sed -n 's / zadania / akcje / gp' Solvetic.txt
Jeśli chcemy, aby wielkość liter nie była rozróżniana, dodamy „i”:
 sed -n 's / zadania / akcje / gpi' Solvetic.txt
Krok 3
Możliwe jest tworzenie ograniczeń dotyczących podmian tylko do niektórych sekcji pliku, przede wszystkim wymieniamy wiersze do analizy:
 sed -n '1,3p' Solvetic.txt

POWIĘKSZAĆ

Krok 4
Zobaczmy, co następuje, możemy znaleźć dwie spacje i zastąpić je jedną:

 sed -n '1.3 s / * / / gp' Solvetic.txt
Gwiazdka (*) reprezentuje zero lub więcej poprzednio wybranego znaku.

Krok 5
Możesz zredukować wzorzec wyszukiwania do pojedynczej spacji za pomocą następującego polecenia:

 sed -n '1.3 s / * / / gp' Solvetic.txt
Widzimy różnicę w wynikach:

POWIĘKSZAĆ

W tym drugim przypadku gwiazdka dopasowuje zero lub więcej poprzedniego znaku, co sprawia, że ​​każdy znak niebędący spacją wygląda jak „zero spacji” po zastosowaniu polecenia.

Krok 6
Aby dokonać dwóch lub więcej podmian jednocześnie wykonujemy:

 sed -n -e / wykonane / zastosowane / gip' -e / zadania / akcje / gip' Solvetic.txt

POWIĘKSZAĆ

4. Opcje wymiany SED w systemie Linux


Możemy również użyć sed do wyodrębnienia nazw plików z systemu, w tym przypadku musimy pamiętać, że każdy obiekt musi pasować do wzorca wyszukiwania (podwyrażeń), który można ponumerować (maksymalnie do dziewięciu elementów).

Krok 1
Liczby te mogą być następnie użyte do odniesienia się do określonych podwyrażeń.
Podwyrażenie musi być ujęte w nawiasy [()], a nawiasy muszą być poprzedzone ukośnikiem odwrotnym (\), aby nie były wykrywane jako normalny znak, na przykład:

 sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd

POWIĘKSZAĆ

Zmienne używane w tym poleceniu to

  • sed 's /: wskazuje polecenie sed i początek wyrażenia zastępującego.
  • \ (: zawrzyj podwyrażenie poprzedzone odwrotnym ukośnikiem
  • [^:] *: jest pierwszym podwyrażeniem wyszukiwanego terminu, które zawiera grupę w nawiasach, znak karetki (^) oznacza „nie”, gdy jest używany w grupie, czyli dowolny znak, który nie jest dwukropkiem
  • \): Nawias zamykający [)] z odwrotnym ukośnikiem
  • : *: jest drugim podwyrażeniem wyszukiwania, które wskazuje "dowolny znak i dowolną ich liczbę".
  • / \ 1: jest zamienną częścią wyrażenia, która zawiera liczbę 1 poprzedzoną ukośnikiem odwrotnym (\) i wskazuje, że tekst pasuje do pierwszego podwyrażenia
  • / ': zakończ polecenie sed

Krok 2
W poprzednim poleceniu szukaliśmy dowolnego ciągu znaków, który nie zawiera dwukropka, ponieważ każdy wiersz pliku / etc / passwd zaczyna się od nazwy użytkownika zakończonej dwukropkiem. Możemy zastąpić tę wartość izolując nazwę użytkownika następującym poleceniem:

 sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd

POWIĘKSZAĆ

Krok 3
Możemy wyświetlić tylko nazwy użytkowników za pomocą następującego polecenia:

 sed 's /:.*// "/ etc / passwd
Inną opcją z sed jest użycie parametru c (cut - cut) do zamiany tekstu w pliku, na przykład:
 sed '/ Linux / c Linux system operacyjny' Solvetic.txt

POWIĘKSZAĆ

5. Wstaw wiersze i tekst za pomocą SED w systemie Linux

Krok 1
Innym zadaniem do wykorzystania z sed jest wstawianie nowych linii i tekstu do pliku, w tym przypadku mamy następujące dane:

POWIĘKSZAĆ

Krok 2
Możemy wstawić nową linię określając poniżej, pod którą zostanie wstawiona:

 sed '/ Ub / a -> Wstawiono!' Solvetic.txt

POWIĘKSZAĆ

Krok 3
Możliwe jest również użycie polecenia Wstaw (i) w celu wstawienia nowej linii nad dopasowaniem:

 sed '/ Wi / i -> Wstawiono!' Solvetic.txt

POWIĘKSZAĆ

Krok 4
Możemy skorzystać ze znaku ampersand (&) w celu dodania nowego tekstu do pasującej linii w pliku, wykonujemy:

 sed 's /.*/--> Wstawiono & /' Solvetic.txt

POWIĘKSZAĆ

6. Jak usunąć linię za pomocą SED Linux


W tym przypadku musimy użyć parametru d (delete), aby usunąć np. drugą wykonywaną linię:
 sed '2d' Solvetic.txt

POWIĘKSZAĆ

W razie potrzeby możemy usunąć zakres:

 sed '1,4d' Solvetic.txt
Aby usunąć linie spoza zakresu, musimy użyć wykrzyknika (!) W następujący sposób:
 sed '2,4! d' Solvetic.txt

7. Jak zapisać zmiany za pomocą SED w systemie Linux

Krok 1
Aby zastosować wprowadzone zmiany, można użyć opcji In-place (-i), aby sed zapisał zmiany w oryginalnym pliku, ale dla większego bezpieczeństwa możemy dodać rozszerzenie kopii zapasowej w następujący sposób (wykonaliśmy kopię zapasową wiersze zawierające słowo Wi):

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt
Wymieniamy zawartość:
 kot Solvetic.txt.bak

POWIĘKSZAĆ

Krok 2
Możliwe jest przekierowanie wyjścia do nowego pliku z tymi samymi wynikami:

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt

POWIĘKSZAĆ

Dzięki sed możemy pracować z plikami w całkowicie kompletny sposób w Linuksie, ponieważ widzieliśmy każdą z jego opcji użycia.

wave wave wave wave wave