Edytor strumieni - składnia podstawowa

W tym rozdziale przedstawiono podstawowe polecenia obsługiwane przez SED i ich składnię wiersza poleceń. SED można wywołać w dwóch następujących formach:

sed [-n] [-e] 'command(s)' files 
sed [-n] -f scriptfile files

Pierwsza forma pozwala na sprecyzowanie poleceń w linii i są one ujęte w pojedyncze cudzysłowy. Później pozwala określić plik skryptu, który zawiera polecenia SED. Możemy jednak wielokrotnie używać obu formularzy razem. SED udostępnia różne opcje wiersza poleceń do kontrolowania jego zachowania.

Zobaczmy, jak możemy określić wiele poleceń SED. SED zapewniadeletepolecenie, aby usunąć określone linie. Usuńmy pierwszą, drugą i piątą linię. Na razie zignoruj ​​wszystkie szczegóły polecenia usuwania. Później omówimy więcej na temat polecenia usuwania.

Najpierw wyświetl zawartość pliku przy użyciu rozszerzenia cat Komenda.

[jerry]$ cat books.txt

Po wykonaniu powyższego kodu otrzymasz następujący wynik:

1) A Storm of Swords, George R. R. Martin, 1216 
2) The Two Towers, J. R. R. Tolkien, 352 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

Teraz poinstruuj SED, aby usunął tylko niektóre linie. Tutaj, aby usunąć trzy linie, określiliśmy trzy oddzielne polecenia z opcją -e.

[jerry]$ sed -e '1d' -e '2d' -e '5d' books.txt

Po wykonaniu powyższego kodu otrzymasz następujący wynik:

3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
6) A Game of Thrones, George R. R. Martin, 864

Dodatkowo możemy zapisać wiele poleceń SED w pliku tekstowym i dostarczyć plik tekstowy jako argument do SED. SED może zastosować każde polecenie w buforze wzorców. Poniższy przykład ilustruje drugą formę SED.

Najpierw utwórz plik tekstowy zawierający polecenia SED. Dla łatwiejszego zrozumienia użyjmy tych samych poleceń SED.

[jerry]$ echo -e "1d\n2d\n5d" > commands.txt [jerry]$ cat commands.txt

Po wykonaniu powyższego kodu otrzymasz następujący wynik:

1d 
2d 
5d

Teraz poinstruuj SED, aby odczytywał polecenia z pliku tekstowego. Tutaj osiągamy ten sam wynik, co w powyższym przykładzie.

[jerry]$ sed -f commands.txt books.txt

Po wykonaniu powyższego kodu otrzymasz następujący wynik:

3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
6) A Game of Thrones,George R. R. Martin, 864

Opcje standardowe

SED obsługuje następujące standardowe opcje:

  • -n: Domyślny wydruk bufora wzorca. Na przykład następujące polecenie SED nie wyświetla żadnych danych wyjściowych:

  • [jerry]$ sed -n '' quote.txt
  • -mi : Następny argument to polecenie edycji. W tym przypadku nawiasy kątowe oznaczają parametr obowiązkowy. Korzystając z tej opcji, możemy określić wiele poleceń. Wydrukujmy każdy wiersz dwa razy:

  • [jerry]$ sed -e '' -e 'p' quote.txt

Po wykonaniu powyższego kodu otrzymasz następujący wynik:

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist 
 - Paulo Coelho, The Alchemist
  • -fa : Następny argument to plik zawierający polecenia edycyjne. Nawiasy kątowe oznaczają obowiązkowy parametr. W poniższym przykładzie określamy polecenie drukowania poprzez plik:

[jerry]$ echo "p" > commands 
[jerry]$ sed -n -f commands quote.txt

Po wykonaniu powyższego kodu otrzymasz następujący wynik:

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

Opcje specyficzne dla GNU

Przejdźmy szybko przez opcje SED specyficzne dla GNU. Zauważ, że te opcje są specyficzne dla GNU; i może nie być obsługiwany przez inne warianty SED. W dalszych sekcjach omówimy te opcje bardziej szczegółowo.

  • -n, --quiet, --silent: To samo co standardowa opcja -n.

  • -e skrypt, --expression = skrypt: To samo, co standardowa opcja -e.

  • -f plik-skryptu, --file = plik-skryptu: To samo co standardowa opcja -f.

  • --follow-symbollinks: jeśli podano tę opcję, SED podąża za dowiązaniami symbolicznymi podczas edycji plików w miejscu.

  • -i [PRZYROSTKA], --in-miejsce [= PRZYROSTKA]: Ta opcja służy do edycji pliku w miejscu. Jeśli podano przyrostek, wykonuje kopię zapasową oryginalnego pliku, w przeciwnym razie zastępuje oryginalny plik.

  • -l N, --line-lenght = N: Ta opcja ustawia długość wiersza polecenia l na N znaków.

  • --posix: Ta opcja wyłącza wszystkie rozszerzenia GNU.

  • -r, --regexp-extended: Ta opcja pozwala na użycie rozszerzonych wyrażeń regularnych zamiast podstawowych wyrażeń regularnych.

  • -u, --unbuffered: jeśli podano tę opcję, SED ładuje minimalną ilość danych z plików wejściowych i częściej opróżnia bufory wyjściowe. Jest to przydatne do edytowania wyniku "tail -f", gdy nie chcesz czekać na wyjście.

  • -z, --null-data: Domyślnie SED oddziela każdy wiersz znakiem nowego wiersza. Jeśli podano opcję NULL-data, oddziela wiersze znakami NULL.