- 1. Jak korzystać z polecenia SED w systemie Linux
- 2. Zaznaczanie tekstu poleceniem SED Linux
- 3. Jak tworzyć zamienniki za pomocą SED Linux
- 4. Opcje wymiany SED w systemie Linux
- 5. Wstaw wiersze i tekst za pomocą SED w systemie Linux
- 6. Jak usunąć linię za pomocą SED Linux
- 7. Jak zapisać zmiany za pomocą SED w systemie Linux
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.txtKrok 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.txtKrok 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.txtW 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.txtW 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.txtJeśli chcemy, aby wielkość liter nie była rozróżniana, dodamy „i”:
sed -n 's / zadania / akcje / gpi' Solvetic.txtKrok 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.txtGwiazdka (*) 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.txtWidzimy 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 / passwdInną 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.txtAby 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.txtWymieniamy 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.