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.
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.