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.