Jak usunąć wiersze z pliku za pomocą polecenia SED

Jak usunąć wiersze z pliku za pomocą polecenia SED
Polecenie SED jest znane jako edytor strumienia. Polecenie SED jest używane w Linux do wykonywania podstawowej transformacji tekstu.

Jednym z wielu podstawowych poleceń Linuksa jest również polecenie SED, które odgrywa istotną rolę w manipulacji plikami. Jest używany do wielu celów; Niektóre z głównych są następujące.

Usuń lub usuń tę konkretną linię, która pasuje do podanych wzorów.

  • Usuwanie linii za pomocą wyrażeń regularnych.
  • Na podstawie pozycji pliku usuń określoną linię.

Tak więc, jeśli myślisz o usunięciu linii z pliku za pomocą polecenia SED, przeczytaj nasz artykuł od początku do końca. Damy ci krótkie metody usuwania linii

Jak usunąć wiersze z pliku za pomocą polecenia SED?

Użyjemy polecenia SED bez -i w tym artykule, ponieważ jest to artykuł demonstracyjny. Podobną metodą jest opcja „sucha uruchom”, która pokazuje wszystkie wartości pliku bez wprowadzania żadnych zmian.

Korzystając z polecenia SED, możemy usunąć wiersze w zależności od środowiska, używając -i.

Aby pokazać polecenie SED, tworzymy plik o nazwie Linuxhintos.tekst. Aby podać lepsze informacje, uwzględniamy te numery linii w następującej treści.

Usuwanie linii z pliku na podstawie pozycji

Ta część wyjaśni za pomocą polecenia SED do usuwania linii z pliku „Linuxhintos.txt 'na podstawie jego pozycji.

Najpierw otwórz plik za pomocą następującego polecenia:

cat ~//

Teraz wykonaj poniższe polecenie, aby usunąć pierwszy wiersz:

plik sed „nd”

W powyższym poleceniu:

N- Linia „nth” w pliku

D- Usunięcie pliku

Wykonajmy to polecenie w naszym przykładzie, aby usunąć 10. wiersz z pliku tekstowego:

Dokumenty CD
SED „10D” Linuxhintos.tekst

Usuń ostatni wiersz z pliku

Jeśli będziemy musieli usunąć ostatni wiersz z pliku, zamiast „n” w składni używanej powyżej, użyjemy „$.„Tutaj $ reprezentuje ostatnią linię.

plik sed '$ d'

Następnie nasz plik zmieni się na coś takiego.

Usuń razem pierwszą linię i ostatnią linię

Jeśli chcemy usunąć pierwsze i ostatnie wiersze, musimy połączyć powyższe dwa polecenia.

sed 'nd; $ d' nazwa pliku

Dzięki temu poleceniu zarówno nasze pierwsze, jak i ostatnie wiersze są usuwane z pliku jednocześnie.

Jak widać na powyższym obrazie, pierwszy i ostatni wiersz został usunięty z pliku tekstowego.

Usuń zakres linii

Polecenie SED może usunąć wiersze dowolnego zakresu. W tym celu musimy po prostu wprowadzić „minimum” i „maksymalne” liczby linii.

W tym przykładzie usuniemy linie od 4 do 7 liczb.

plik sed „4,7d”

Po usunięciu tych zakresów linii nasz plik będzie wyglądał tak.

Usuń wiele linii

SED może również usunąć wiele linii w zestawie. Jak widać, w tym przykładzie usunęliśmy trzecią, szóstą, ósmą i ostatnią linie.

sed '3d; 6d; 8d; $ d'

Podczas zastosowania polecenia SED napisanego powyżej, następujące zmiany występują w naszym pliku „Linuxhintos.tekst'.

Usuwanie linii innych niż określona linia lub określony zakres linii

Za pośrednictwem polecenia SED usuwamy te wiersze z plików, które nie są zdefiniowane w poleceniu, i.mi., linie inne niż te, które zostały opisane, są usuwane.

Z tego pliku usuniemy pozostałe linie oprócz liczb 4 do 7.

Sed '4,7! plik d '

Tutaj znak „!”Reprezentuje, że nie powinniśmy usuwać wiersza tego konkretnego numeru z pliku.

! - Służy do przechowywania określonej liczby linii z pliku

Następnie nasz plik będzie wyglądał mniej więcej tak:

Usuń puste lub puste linie

Polecenie SED napisane poniżej usuwa puste lub puste linie z odpowiedniego pliku.

plik sed '/^$/d'

Ponieważ w naszym pliku nie ma pustych ani pustych linii, nie wystąpiły żadne zmiany:

Usuń linie z pliku na podstawie wzoru

W drugiej części zobaczymy to za pomocą polecenia SED, jak usuwamy linie podobnego wzoru.

Usuwanie linii zawierających wzór

W przykładzie następujące polecenie usuwa linie pasujące do wzoru „systemu” z pliku „Linuxhintos.tekst'.

plik sed '/system/d'

Musimy więc usunąć te linie, które „niedostępne”. Dlatego wykonamy poniższe polecenie:

sed '/niedostępne/d' Linuxhintos.tekst

Usuwanie linii zawierających jedno lub kilka ciągów

Za pośrednictwem polecenia SED możemy usunąć wiersze pasujące do wzoru „Nie zaktualizowane” lub „niedostępne” z pliku „Linuxhintos.txt 'i to polecenie to coś takiego:

sed '/nie zaktualizowano \ | niedostępne/d' Linuxhintos.tekst

Usuwanie linii, które zaczynają się od określonego znaku

Możemy usunąć wszystkie linie zaczynające się od dowolnego znaku przez polecenie SED. Utworzyliśmy nowy plik o nazwie „Linuxhintos.TXT 'Z następującymi treściami:

Poniższe polecenie SED usunie wszystkie wiersze, zaczynając od znaku „A”.

plik sed '/^a/d'

Usuniemy takie wiersze z naszego pliku, które zaczynają się od „A” i „L”. Do którego użyjemy następującego polecenia.

sed '/^[al]/d'

Za pomocą SED usuwamy wszystkie linie zaczynające się od „A” i kończące się ciągiem „Linux”.

sed '/^(a).*(Linux)/D '

Usuwanie linii kończących się określonym znakiem

To polecenie SED usuwa wszystkie wiersze kończące się „m."

plik sed '/m $/d'

Następujące polecenie SED usunie linie kończące się zarówno znakami „M”, jak i „X”.

sed '/[xm] $/d'

Linie znaków kończących się „M” i „X” są usuwane z naszego pliku; Następnie nasz plik będzie wyglądał tak.

Usuwanie wszystkich linii, które zaczynają się od wielkimi

Usuniemy wszystkie te wiersze z pliku za pomocą następującego polecenia: wielka litera.

sed '/^[a-z]/d'

Po zastosowaniu powyższego polecenia wszystkie wiersze z naszego pliku, które rozpoczęły się od wielkich liter, zostaną usunięte, a zmiana w naszym pliku będzie taka.

Usunięcie pasującej linii wzoru z określonym zakresem

Za pomocą następującego polecenia usuniemy tylko te linie z niektórych zdefiniowanych linii o określonym wzorze.

Ten przykład usuwa tylko linie z wzorami Linux z pliku od 1 do 6 linii.

SED '1,6 /linux/d;

Po zastosowaniu polecenia nasz plik „SED - Demo -1.txt 'będzie wyglądać mniej więcej tak.

Usuniemy drugi wiersz z następującym poleceniem SED tylko wtedy, gdy zawiera wzór „OpenSuse”.

SED '2 /openSuse/d;'

Odpowiednie polecenie usunie drugi wiersz z naszego pliku „SED - Demo -1.txt ', ponieważ ma określony wzór „openSuse."

Odpowiednie polecenie usunie drugi wiersz z naszego pliku „SED - Demo -1.txt ', ponieważ ma określony wzór „openSuse."

Możemy również usunąć wiersz pasujący do wzoru „systemu” i następującego wiersza w pliku za pomocą polecenia SED.

sed '/System/n; d;'

Usuń linie o określonych wzorach

Możesz usunąć wszystkie wiersze po wzorze „centos” za pomocą polecenia SED.

sed '/centos/, $ d'

Usuwanie linii zawierających liczby/cyfry

Za pomocą polecenia SED napisanego poniżej możemy usunąć wszystkie wiersze zawierające „cyfrę.'

sed '/[0-9]/d'

Dokonując pewnych zmian w poleceniu SED, usuniemy wszystkie te wiersze z pliku, które zaczynają się tylko od cyfr.

sed '/^[0-9]/d'

Po tym poleceniu wszystkie linie, które zaczynają się od cyfr, zostaną usunięte z naszego pliku.

Ponownie, wprowadzając pewne zmiany w poleceniu, usuniemy tylko te wiersze z pliku, który kończy się cyfrą.

sed '/[0-9] $/d'

Usuwanie linii zawierających znaki alfabetyczne z pliku

Za pomocą polecenia SED usuniemy wszystkie wiersze z pliku „Linuxhintos.txt, które zawierają dowolne znaki alfabetyczne.

sed '/[a-za-z]/d'

Wniosek

W tym artykule pokazano kilka przykładów usuwania linii z pliku za pomocą polecenia SED. Widzimy, jak za pomocą polecenia SED możemy łatwo usunąć dowolne wiersze z plików. Jeśli pamiętamy te polecenia, to oszczędzamy dużo czasu podczas redukującego.