Polecenie SED, aby usunąć wiersz

Polecenie SED, aby usunąć wiersz
SED to wbudowane narzędzie Linux do manipulacji tekstem. Termin SED oznacza Edytor strumienia. Pomimo nazwy SED sam nie jest edytorem tekstu. Zamiast tego wymaga tekstu jako wejścia, wykonuje różne modyfikacje tekstu zgodnie z instrukcjami i drukuje wyjście.

Ten przewodnik pokaże, jak użyć SED do usunięcia wiersza z tekstu.

Sed na Linuksie

Pełna nazwa SED daje nam wskazówkę na jego metodę pracy. SED bierze tekst wejściowy jako strumień. Tekst może pochodzić z dowolnego miejsca - plik tekstowy lub standardowe wyjście (stdout). Po przyjęciu wejścia SED działa na linii IT według linii.

Do demonstracji oto prosty plik tekstowy, który wygenerowałem.

$ Cat Dummy.tekst
1.
2. szybki
3. brązowy
4. lis
5. skoki
6. nad
7.
8. leniwy
9. pies

Linia usuwania za pomocą SED

Aby usunąć wiersz, użyjemy polecenia SED „D”. Zauważ, że musisz zadeklarować, która linia usuń. W przeciwnym razie SED usunie wszystkie linie.

Usuń pojedynczą linię

Następujące polecenie SED usunie pierwszy wiersz tekstu.

sed „1d” manekin.tekst

Zasadniczo, aby usunąć linię, potrzebujesz numeru linii linii docelowej. Usuńmy linię 5.

sed „5d” manekin.tekst

Aby usunąć ostatni wiersz pliku tekstowego, zamiast ręcznego obliczania numeru linii, zamiast tego użyj „$”.

sed '$ d' manekin.tekst

Usuń zakres linii

SED może usunąć szereg linii. Tutaj minimalna wartość linii wynosi 1, a maksymalna wartość linii to 5. Aby zadeklarować zasięg, używamy przecinka (,).

sed „1,5d” manekin.tekst

Usuń wiele linii

Co jeśli linie, które chcesz usunąć? Spójrz na następujące polecenie SED. Zauważ, że używamy półkolisu (;) jako ogranicznika. Zasadniczo każda opcja ograniczona jest osobnym poleceniem SED.

sed '1d; 2d; 3d; $ d' manekin.tekst

Usuń wszystkie linie oprócz określonego zakresu

W następnym przykładzie SED utrzyma tylko linie opisane przez zakres. Tutaj, "!”Jest operatorem negacji, który mówi SED, aby zachował określone linie.

sed '2,4!D 'Manekin.tekst

Usuń puste linie

Jeśli w tekście jest wiele pustych lub pustych linii, następujące polecenie SED usunie je wszystkie.

sed '/^$/d' manekin.tekst

Usuń linie na podstawie wzoru

SED może wyszukiwać określony wzór i wykonywać określone działania na linii. Możemy użyć tej funkcji do usuwania określonych linii, które pasują do wzoru.

Rzućmy okiem na następującą demonstrację. SED usunie dowolną linię zawierającą ciąg „The”.

sed '/the/d' manekin.tekst

Możemy również opisać wiele ciągów do wyszukiwania. Każdy ciąg jest ograniczony za pomocą symbolu „\ |”.

sed '/brąz \ | manekin/d'.tekst

Usuń linie, zaczynając od określonego znaku

Aby oznaczyć początek linii, użyjemy symbolu CareT (^).

Następujące polecenie SED usunie wszystkie wiersze zaczynające się od cyfry. Tutaj grupa postaci „[: cyfra:]” opisuje wszystkie cyfry (0-9).

sed '/^[: cyfr:]]/d' manekin.tekst

Możemy również opisać wiele znaków dla ważnego dopasowania. Poniższy przykład będzie pasował do wszystkich linii, które zaczynają się od „T” i „B”.

sed '/^[tb]/d' manekin.tekst

W następnym przykładzie sprawdź, jak usunąć wszystkie linie, które zaczynają się od znaku wielkiego. Tutaj używamy Grupy znaków wielkich „[: Upper:]”.

sed '/^[: Upper:]]/d' manekin.tekst

Jeśli linie docelowe mają małe postacie na początku, użyj grupy małej postaci „[: Lower:]”.

sed '/^[: dolne:]]/d' manekin.tekst

Usuń linie kończące się na określonym znaku

Aby oznaczyć koniec linii, możemy użyć symbolu „$”. Opisuje dopasowanie do ostatniego wystąpienia wzoru.

W następnym przykładzie SED usunie linie kończące się „E”.

sed '/e $/d' manekin.tekst

Spróbujmy z wielokrotnym wyszukiwaniem.

sed '/[en] $/d' manekin.tekst

Usuwanie linii pasujących do wzoru i następnej linii

Pokazaliśmy już, jak usunąć linię, jeśli wzór pasuje. Możemy dalej rozszerzyć i usunąć kolejną linię.

Sprawdź następujące polecenie SED.

sed '/the/n; d;'.tekst

SED będzie pasować do linii zawierającej „The” i usuwa również kolejną linię.

Usuwanie linii od dopasowania wzoru do końca

Możemy dalej przedłużyć poprzedni przykład, aby zamówić SED, aby usunąć wszystkie linie, zaczynając od pierwszego dopasowania wzoru.

sed '/lis/, $ d' manekin.tekst

Tutaj SED usunie linię, która pasuje do wzoru „The”, najpierw i wszystkie linie później.

Końcowa myśl

SED to proste narzędzie. Może jednak robić cuda, dzięki wsparciu wyrażenia regularnego. SED również bezproblemowo integruje się z różnymi skryptami.

To był tylko krótki przewodnik pokazujący jedną z funkcji SED - usuwanie linii. Jest mnóstwo innych rzeczy, które możesz zrobić z sed. Na przykład sprawdź ten mega przewodnik na 50 przykładach SED. To fantastyczny przewodnik obejmujący wszystkie podstawy i wiele zaawansowanych implementacji SED.