sed - edytor strumieniowy do filtrowania i przekształcania
tekstu
sed [-V] [--version] [--help] [-n] [--quiet] [--silent]
[-l N] [--line-length=N] [-u] [--unbuffered]
[-E] [-r] [--regexp-extended]
[-e skrypt] [--expression=skrypt]
[-f plik-skryptu] [--file=plik-skryptu]
[skrypt-jeśli-brak-innego-skryptu]
[plik...]
Sed jest edytorem strumieniowym. Edytor strumieniowy jest
używany do wykonywania prostych przekształceń tekstu na
strumieniu wejściowym (pliku lub strumienia z potoku). Sed
jest w jakimś stopniu podobny do edytorów
przestrzegających edycji skryptowych (np. ed), jednak
działa czyniąc tylko jeden przebieg na strumieniu
wejściowym i dlatego jest znacznie wydajniejszy.
Możliwość filtrowania tekstu w potoku przez seda
jest cechą, która w największym stopniu
wyróżnia go spośród innych edytorów
innego typu.
-n, --quiet, --silent
- hamuje automatyczne wypisywanie bufora tekstowego
--debug
- opisuje wykonywanie programu
-e skrypt, --expression=skrypt
- dodaje skrypt do poleceń do wykonania
-f plik-skryptu,
--file=plik-skryptu
- dodaje zawartość pliku-skryptu do poleceń do
wykonania
--follow-symlinks
- podąża za dowiązaniami symbolicznymi podczas
przetwarzania w miejscu
-i[PRZYROSTEK],
--in-place[=PRZYROSTEK]
- edytuje pliki w miejscu (tworzy kopię zapasową, jeśli
podano przyrostek)
-l N, --line-length=N
- określa pożądaną długość
zawijania wierszy do polecenia l
--posix
- wyłącza wszystkie rozszerzenia GNU
-E, -r, --regexp-extended
- używa w skrypcie rozszerzonych wyrażeń regularnych
(ze względu na kompatybilność z -E z
POSIX).
-s, --separate
- traktuje pliki jako oddzielne, zamiast jako jeden, ciągły
strumień
--sandbox
- działa w trybie piaskownicy (wyłącza polecenia
e/r/w).
-u, --unbuffered
- ładuje minimalną ilość danych z plików
wejściowych i opróżnia bufory wyjściowe
znacznie częściej
-z, --null-data
- oddziela wiersze znakiem NUL
- --help
- wyświetla ten tekst i kończy pracę
- --version
- wyświetla informacje o wersji i kończy działanie
Jeśli nie podano żadnej z opcji -e,
--expression, -f ani --file, to pierwszy argument
niebędący opcją jest interpretowany jako skrypt
seda. Wszystkie pozostałe argumenty są nazwami
plików wejściowych; jeśli nie podano żadnych, to
czytane jest standardowe wejście.
Strona internetowa GNU sed:
<https://www.gnu.org/software/sed/>. Ogólna pomoc
dotycząca oprogramowania GNU: <https://www.gnu.org/gethelp/>.
Zgłoszenia błędów proszę
wysyłać na adres: <bug-sed@gnu.org>.
Pakietowanie Debiana — Copyright © 2022 Free
Software Foundation, Inc. Licencja GPLv3+: GNU GPL w wersji 3 lub
późniejszej <https://gnu.org/licenses/gpl.html>. Jest to
wolne oprogramowanie: można je zmieniać i ponownie
dystrybuować. BRAK GWARANCJI, w zakresie dopuszczalnym przez
prawo.
SKŁADNIA POLECEŃ
Jest to zwięzłe podsumowanie poleceń
sed, przeznaczone jako przypomnienie dla osób znających
program sed; aby przeczytać pełniejszy opis konieczne
jest sięgnięcie po inny typ dokumentacji (np. texinfo).
„Polecenia” nie przyjmujące
adresów
- : etykieta
- Etykieta do poleceń b i t.
- #komentarz
- Komentarz kończy się wraz ze znakiem nowego wiersza (lub
końcem fragmentu skryptu -e).
- }
- Nawias klamrowy zamykający blok { }.
- =
- Wypisuje bieżący numer wiersza
- a \
- tekst
- Dołącza (dodaje za) tekst, w którym
każdy ewentualny znak nowego wiersza jest poprzedzony odwrotnym
ukośnikiem.
- i \
- tekst
- Wstawia (dodaje przed) tekst, w którym każdy
ewentualny znak nowego wiersza jest poprzedzony odwrotnym
ukośnikiem.
- q
[status-zakończenia]
- Natychmiast wychodzi ze skryptu seda bez przetwarzania dalszego
wejścia, z wyjątkiem sytuacji, gdy nie
wyłączono automatycznego wypisywania bieżącego
bufora tekstowego, który będzie wówczas nadal
wypisywany. Argument statusu zakończenia jest rozszerzeniem
GNU.
- Q
[status-zakończenia]
- Natychmiast wychodzi ze skryptu seda bez przetwarzania dalszego
wejścia. Argument statusu zakończenia jest rozszerzeniem
GNU.
- r nazwa-pliku
- Dołącza (dodaje za) tekst odczytany z
nazwy-pliku.
- R nazwa-pliku
- Dołącza (dodaje za) tekst odczytany z nazwy-pliku.
Każde wywołanie tego polecenia odczytuje jeden wiersz z
pliku. Jest to rozszerzenie GNU.
- {
- Rozpoczyna blok poleceń (który kończy się
znakiem } ).
- b etykieta
- Przechodzi do etykiety; jeśli jej nie podano, przechodzi na
koniec skryptu.
- c \
- tekst
- Zastępuje wybrane wiersze tesktem, w którym
każdy ewentualny znak nowego wiersza jest poprzedzony odwrotnym
ukośnikiem.
- d
- Usuwa bufor tekstowy. Rozpoczyna nowy cykl.
- D
- Jeśli wzorzec nie zawiera znaku nowego wiersza, rozpoczyna nowy
zwykły cykl jak gdyby użyto polecenia d. W przeciwnym razie
usuwa bufor tekstowy aż do pierwszego znaku nowego wiersza i
rozpoczyna cykl od nowa z powstałym w ten sposób buforem
tekstowym, bez odczytywania znaku nowego wiersza z wejścia.
- h H
- Kopiuje/dołącza bieżący bufor tekstowy do
wewnętrznego schowka.
- g G
- Kopiuje/dołącza wewnętrzny schowek do bufora
tekstowego.
- l
- Wypisuje bieżący wiersz w formie „wizualnie
jednoznacznej”.
- l szerokość
- Wypisuje bieżący wiersz w formie „wizualnie
jednoznacznej”, przełamując go po
szerokość znaków. Jest to rozszerzenie
GNU.
- n N
- Czyta/dołącza następny wiersz do bufora
tekstowego.
- p
- Wypisuje bieżący bufor tekstowy.
- P
- Wypisuje bieżący bufor tekstowy aż do jego pierwszego
znaku nowego wiersza.
- s/wyrażenie-regularne/zamiennik/
- Podejmuje próbę dopasowania
wyrażenia-regularnego do bieżącego bufora
tekstowego. Jeśli się to uda, zastępuje
dopasowaną część zamiennikiem.
Zamiennik może zawierać znak specjalny &,
aby odnieść się do dopasowanej części
bufora tekstowego, oraz sekwencje specjalne od \1 do \9, aby
odnieść się do odpowiedniej pasującej
części wyrażenia w
wyrażeniu-regularnym.
- t etykieta
- Jeśli s/// wykonało pomyślnie zastąpienie od
czasu odczytania ostatniego wiersza wejściowego oraz ostatniego
polecenia t lub T, przechodzi do etykiety. Jeśli nie podano
etykiety, przechodzi do końca skryptu.
- T etykieta
- Jeśli żadne s/// nie wykonało pomyślnie
zastąpienia od czasu odczytania ostatniego wiersza
wejściowego oraz ostatniego polecenia t lub T, przechodzi do
etykiety. Jeśli nie podano etykiety, przechodzi do
końca skryptu. Jest to rozszerzenie GNU.
- w nazwa-pliku
- Zapisuje bieżący bufor tekstowy do nazwy-pliku.
- W nazwa-pliku
- Zapisuje pierwszy wiersz bieżącego bufora tekstowego do
nazwy-pliku. Jest to rozszerzenie GNU.
- x
- Zamienia zawartość bufora tekstowego i wewnętrznego
schowka.
- y/źródło/cel/
- Zamienia znaki w buforze tekstowym, które znajdują
się w źródle, na odpowiadające znaki w
celu.
Polecenia Seda mogą:
* nie zawierać adresów - wtedy polecenia są wykonywane
na wszystkich wierszach wejściowych;
* zawierać jeden adres - są wówczas wykonywane na
wierszach wejściowych pasujących do tego adresu;
* zawierać dwa adresy - polecenia są wykonywane na wszystkich
wierszach wejściowych od pierwszego adresu aż do drugiego
adresu.
Należy odnotować trzy rzeczy o zakresach adresów:
* składnia to adres1,adres2 (tzn. adresy są
oddzielone przecinkami);
* wiersz z dopasowanym adresem1 jest zawsze akceptowany, nawet
jeśli adres2 wybiera wcześniejszy wiersz;
* jeśli adres2 jest wyrażeniem-regularnym, to nie
jest testowany w odniesieniu do wiersza, do którego dopasowano
adres1.
Po adresie (lub zakresie adresu), a przed poleceniem, można
wstawić znak !, który powoduje, że polecenie
powinno być wykonane tylko na adresie (lub zakresie adresu),
który nie pasuje.
Obsługiwane są następujące typy
adresów:
- numer
- Dopasowuje jedynie wiersz o podanym numerze
(zwiększającym się wraz z kolejnymi plikami, chyba
że podano też opcję -s).
- pierwszy~krok
- Dopasowuje co krok wiersz, zaczynając od wiersza o numerze
pierwszy. Na przykład "sed -n 1~2p" wypisuje
wszystkie nieparzyste wiersze w strumieniu wejściowym, a adres 2~5
dopasuje co piąty wiersz, zaczynając od drugiego.
Pierwszy może wynosić zero, w takim przypadku
sed działa identycznie, gdyby wynosił on tyle co
krok (jest to rozszerzenie).
- $
- Dopasowuje ostatni wiersz.
- /wyrażenie-regularne/
- Dopasowuje wiersze pasujące do wyrażenia regularnego
wyrażenie-regularne. Dopasowanie jest dokonywane w
bieżącej przestrzeni dopasowania, którą
można zmodyfikować poleceniem takim jak
„s///”.
- \zwyrażenie-regularnez
- Dopasowuje wiersze pasujące do wyrażenia regularnego
wyrażenie-regularne. Za z można
podstawić dowolny znak.
GNU sed obsługuje również specjalne
formy dwuadresowe:
- 0,adres2
- Rozpoczyna w stanie „dopasowany pierwszy adres”, aż
do momentu znalezienia adresu2. Jest to podobne do 1,adres2
, z wyjątkiem tego, że gdy adres2 zostanie dopasowany
do pierwszego wiersza wejścia, to forma 0,adres2
będzie na końcu swojego zakresu, podczas gdy forma
1,adres2 będzie wciąż na początku
swojego zakresu. Działa to tylko gdy adres2 jest
wyrażeniem regularnym.
- adres1,+N
- Dopasowuje adres1 do N-tego wiersza znajdującego
się za adresem1
- adres1,~N
- Dopasowuje adres1 i wiersze za adresem1 do następnego
wiersza wejściowego, którego numer wiersza jest
wielokrotnością N.
Podstawowe wyrażenia regularne (BRE) określone przez
POSIX.2 powinny być obsługiwane, ale nie są
obsługiwane całkowicie, ze względu na problemy z
wydajnością. Sekwencja \n w wyrażeniu regularnym
pasuje do znaku nowego wiersza, podobnie dla wyrażeń
\a, \t i innych sekwencji. Opcja -E
przełącza w celu korzystania z rozszerzonych
wyrażeń regularnych; było to obsługiwane
już od wielu lat w GNU sed, a obecnie jest również
objęte normą POSIX.
Zgłoszenia błędów proszę
wysyłać na adres bug-sed@gnu.org (po angielsku).
Proszę również umieścić wynik polecenia
"sed --version" w treści wiadomości, jeśli to
możliwe.
Napisane przez Jaya Fenlasona, Toma Lorda, Kena Pizziniego, Paolo
Bonziniego, Jima Meyeringa, i Assafa Gordona.
Niniejszy program sed zbudowano bez obsługi SELinux.
SELinux jest wyłączony w tym systemie.
Strona internetowa GNU sed:
<https://www.gnu.org/software/sed/>. Ogólna pomoc
dotycząca oprogramowania GNU: <https://www.gnu.org/gethelp/>.
Zgłoszenia błędów proszę
wysyłać na adres: <bug-sed@gnu.org>.
awk(1), ed(1), grep(1), tr(1),
perlre(1), sed.info, dowolna z wielu książek o
sedzie, FAQ seda
(http://sed.sf.net/grabbag/tutorials/sedfaq.txt),
http://sed.sf.net/grabbag/.
Pełna dokumentacja sed jest dostępna w
formacie Texinfo. Jeśli programy info i sed są
poprawnie zainstalowane, to polecenie
- info sed
powinno dać dostęp do pełnego
podręcznika.
Tłumaczenie niniejszej strony podręcznika: Przemek
Borys <pborys@dione.ids.pl> i Michał Kułach
<michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną
dokumentacją. Bliższe informacje o warunkach licencji
można uzyskać zapoznając się z
GNU General
Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika
prosimy zgłaszać na adres listy dyskusyjnej
manpages-pl-list@lists.sourceforge.net.