logo

Polecenie Sed w systemie Linux/Unix z przykładami

Polecenie SED w systemie UNIX oznacza edytor strumieni i może wykonywać wiele funkcji na pliku, takich jak wyszukiwanie, znajdowanie i zamienianie, wstawianie lub usuwanie. Chociaż najczęstszym zastosowaniem polecenia SED w systemie UNIX jest zastępowanie lub znajdowanie i zamienianie. Używając SED możesz edytować pliki nawet bez ich otwierania, co jest znacznie szybszym sposobem na znalezienie i zastąpienie czegoś w pliku, niż najpierw otwarcie tego pliku w VI Editorze, a następnie jego zmiana.

  • SED to potężny edytor strumienia tekstowego. Potrafi wstawiać, usuwać, wyszukiwać i zastępować (podstawiać).
  • Polecenie SED w systemie Unix obsługuje wyrażenia regularne, które pozwalają na wykonywanie złożonego dopasowywania wzorców.

Składnia:

 sed OPTIONS... [SCRIPT] [INPUTFILE...]>

Przykład:
Jako dane wejściowe rozważ poniższy plik tekstowy.



 $cat>geekfile.txt>
 unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

Przykładowe polecenia

    Zastępowanie lub zastępowanie ciągu: Polecenie Sed jest najczęściej używane do zastępowania tekstu w pliku. Poniższe proste polecenie sed zastępuje w pliku słowo unix słowem linux.
     $sed 's/unix/linux/' geekfile.txt>

    Wyjście :

    kwartał w biznesie
     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Tutaj s określa operację podstawienia. / to ograniczniki. Unix jest wzorcem wyszukiwania, a Linux jest ciągiem zastępczym.

    Domyślnie polecenie sed zastępuje pierwsze wystąpienie wzorca w każdej linii i nie zastąpi drugiego, trzeciego… wystąpienia w linii. Zastępowanie n-tego wystąpienia wzorca w linii: Użyj flag /1, /2 itd., aby zastąpić pierwsze, drugie wystąpienie wzorca w linii. Poniższe polecenie zastępuje drugie wystąpienie słowa unix słowem linux w linii.

    rhel kontra centos
     $sed 's/unix/linux/2' geekfile.txt>

    Wyjście:

     unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>
    Zastępowanie wszystkich wystąpień wzorca w linii: Flaga zastępcza /g (zastąpienie globalne) określa polecenie sed, które ma zastąpić wszystkie wystąpienia ciągu w linii.
     $sed 's/unix/linux/g' geekfile.txt>

    Wyjście :

     linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>
    Zastępowanie od n-tego wystąpienia do wszystkich wystąpień w linii: Użyj kombinacji /1, /2 itd. i /g, aby zastąpić wszystkie wzorce od n-tego wystąpienia wzorca w linii. Następujące polecenie sed zastępuje w wierszu trzecie, czwarte, piąte... słowo unixowe słowem linux.
     $sed 's/unix/linux/3g' geekfile.txt>

    Wyjście:

     unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>
    Umieść w nawiasie pierwszy znak każdego słowa: W tym przykładzie sed drukowany jest pierwszy znak każdego słowa w nawiasie.
     $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>

    Wyjście:

     (W)elcome (T)o (T)he (G)eek (S)tuff>
    Zastępowanie ciągu znaków w wierszu o określonym numerze: Możesz ograniczyć polecenie sed do zastąpienia ciągu znaków w wierszu o określonym numerze. Przykładem jest
     $sed '3 s/unix/linux/' geekfile.txt>

    Wyjście:

    rozmiar czcionki, lateks
     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Powyższe polecenie sed zastępuje ciąg znaków tylko w trzeciej linii. Duplikowanie zastąpionej linii za pomocą flagi /p : Flaga druku /p drukuje zamienioną linię dwukrotnie na terminalu. Jeśli linia nie zawiera wzorca wyszukiwania i nie została zastąpiona, opcja /p drukuje tę linię tylko raz.

     $sed 's/unix/linux/p' geekfile.txt>

    Wyjście:

     linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
    Drukowanie tylko zastąpionych linii: Użyj opcji -n wraz z flagą drukowania /p, aby wyświetlić tylko zastąpione linie. Tutaj opcja -n pomija zduplikowane wiersze wygenerowane przez flagę /p i drukuje zastąpione linie tylko raz.
     $sed -n 's/unix/linux/p' geekfile.txt>

    Wyjście:

     linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Jeśli użyjesz samego -n bez /p, wówczas sed niczego nie wyświetli. Zastępowanie ciągu w zakresie linii: Możesz określić zakres numerów linii dla polecenia sed w celu zamiany ciągu.

     $sed '1,3 s/unix/linux/' geekfile.txt>

    Wyjście:

    ile miast jest w nas
     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Tutaj polecenie sed zastępuje linie zakresem od 1 do 3. Innym przykładem jest

     $sed '2,$ s/unix/linux/' geekfile.txt>

    Wyjście:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>

    Tutaj $ wskazuje ostatnią linię w pliku. Zatem polecenie sed zastępuje tekst z drugiej linii do ostatniej linii w pliku. Usuwanie linii z określonego pliku: Komenda SED może być również użyta do usunięcia linii z określonego pliku. Polecenie SED służy do wykonywania operacji usuwania nawet bez otwierania pliku
    Przykłady:
    1. Aby usunąć konkretną linię, w tym przykładzie powiedz n

     Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>

    2. Aby usunąć ostatnią linię

    co to jest ini pulpitu
     Syntax: $ sed '$d' filename.txt>

    3. Aby usunąć linię z zakresu x do y

     Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>

    4. Aby usunąć od n-tej do ostatniej linii

     Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>

    5. Aby usunąć linię dopasowania wzoru

     Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>


Polecenie SED w systemie Linux | Zestaw 2