Provided by:
manpages-pl_20051117-1_all 
NAZWA
sed - edytor strumieniowy
SKŁADNIA
sed [-n] [-g] [-e skrypt ] [-f splik ] [ plik ] ...
OPIS
Sed kopiuje podane pliki (lub domyślnie standardowe wejście) na
standardowe wyjście, przy okazji edytując przepływające dane według
komend zadanych w skrypcie.
Opcja -e załącza pojedynczą komendę edycyjną z następującego po niej
argumentu; jeśli jest ich [komend] więcej, to są one wykonywane w
kolejności pojawienia się. Jeśli jest tam tylko opcja -e i nie ma -f,
flagę -e można pominąć.
Opcja -f powoduje, że komendy są pobieranego z pliku "splik"; jeśli
jest ich kilka, to są one wykonywane w kolejności pojawienia się;
komendy -e i -f można ze sobą łączyć.
Opcja -g powoduje, że sed zachowuje się tak, jakby każda z komend
skryptu miała przyrostek g.
Opcja -n hamuje domyślne wyjście.
Skrypt składa się z komend, po jednej na linię, ułożonych w
następującej postaci:
[adres [, adres] ] funkcja [argumenty]
Normalnie sed cyklicznie kopiuje linie wejścia do bieżącego bufora
tekstowego, a następnie dokonuje kolejno wszystkich komend edycyjnych,
których adresy wybierają bufor, a potem przesyła bufor na standardowe
wyjście i czyści go.
Opcja -n hamuje normalne wyjście (tak, że ma miejsce tylko wyjście p i
w). Podobnie niektóre komendy (n,M) robią samodzielne odczyty linii, a
niektóre inne (d,D) powodują, że komendy następujące za nimi w danym
skrypcie są pomijane (komenda D hamuje też czyszczenie bieżącego bufora
tekstowego, co ma normalnie miejsce przed następnym cyklem).
Pomocnym jest też wiedzieć, że istnieje drugi bufor (nazywany `miejscem
przechowywania', który może być kopiowany, lub doklejany, lub składany
z bieżącym buforem.
Adres jest: liczbą dziesiętną (która odpowiada linii, gdzie numery
linii to liczby zaczynające się od 1, do ostatniej linii pliku), lub
`$', który adresuje ostatnią linię wyjścia, lub kontekstowym adresem,
który jest `/wyrażeniem regularnym/' w zmodyfikowanym stylu ed (1),
więc:
(1) Sekwencja specjalna `0 odpowiada nowej linii osadzonej w buforze,
a `' odpowiada tabulacji.
(2) Linia komend bez adresów wybiera każdy bufor.
(3) Linia komend z jednym adresem wybiera każdy bufor, który odpowiada
temu adresowi.
(4) Linia komend z dwoma adresami odpowiada włącznemu zasięgowi od
pierwszego bufora wejściowego, do drugiego, odpowiadającego
adresowi. (Jeśli drugi adres jest liczbą mniejszą lub równą
numerowi podanemu najpierw, to wybierana jest tylko jedna linia.)
Gdy dopasowany jest drugi adres, sed zaczyna ponownie szukać
pierwszego; tak więc dowolna liczba tych zasięgów będzie
porównywana.
Operator negacji `!', znany z C, może i tu mieć zastosowanie,
wskazując, że komenda odnosi się do linii nie wybranych w adresach.
W następujących funkcjach, maksymalna liczba adresów jest wskazana w
nawiasie.
Argument oznaczony jako "tekst" składa się z jednej, lub większej
ilości linii, w których wszystkie, poza ostatnią muszą kończyć się `',
aby ukryć nową linię.
Odwrotne ukośniki w tekście są traktowane jak odwrotne ukośniki w
łańcuchu zamiany komendy `s' i mogą być używane do chronienia
początkowych białych spacji.
Argument oznaczony jako "rplik" i "wplik" musi być ostatnim w linii
komend. Każdy wplik jest tworzony zanim rozpocznie się przetwarzanie.
Dopuszczalną ilością argumentów wplików jest 10.
a "tekst" (1)
Doklej. Dołącz tekst na wyjście przed odczytaniem następnej linii
wejścia.
b "etykieta" (2)
Przejdź się do komendy `:', przechowującej etykietę. Jeśli nie
podano etykiety, przejdź na koniec skryptu.
c "tekst" (2)
Zmień. Skasuj bieżący tekst z bufora. Z adresem 0 lub 1, lub na
końcu dwuadresowego zasięgu, dołącz tekst na wyjściu. Rozpocznij
następny cykl.
d (2)
Skasuj bieżący bufor tekstowy. Rozpocznij nowy cykl.
D (2)
Skasuj pierwszą linię bieżącego bufora tekstowego (wszystkie
znaki, aż do pierwszej nowej linii). Rozpocznij nowy cykl.
g (2)
Zamień zawartość bieżącego bufora tekstowego z zawartością miejsca
przechowywania.
G (2)
Doklej zawartość miejsca przechowywania do bieżącego bufora
tekstowego.
h (2)
Skopiuj bieżący bufor tekstowy do miejsca przechowywania.
H (2)
Doklej kopię bieżącego bufora tekstowego do miejsca
przechowywania.
i "tekst" (1)
Wstaw. Wstaw tekst na standardowe wyjście.
l (2)
Listuj. Wysyła przestrzeń wzorców na standardowe wyjście. Opcja
"w" może wystąpić jak w komendzie s, opisanej niżej. Niedrukowane
znaki są rozszerzane do:
\b -- backspace (ASCII 08)
\t -- tabulacja (ASCII 09)
\n -- nowa linia (ASCII 10)
\r -- return (ASCII 13)
\e -- escape (ASCII 27)
\xx -- znak ASCII odpowiadający dwóm cyfrom szesnastkowym.
n (2)
Kopiuj bieżący bufor tekstowy na standardowe wyjście. Wczytaj do
bufora nową linię.
N (2)
Doklej następną linię wejścia do bieżącego bufora tekstowego,
wstawiając między nie osadzoną nową linię. Zmienia się bieżący
numer linii.
p (2)
Drukuj. Kopiuj bieżący bufor tekstowy na standardowe wyjście.
P (2)
Kopiuj pierwszą linię bieżącego bufora tekstowego (wszystkie znaki
aż do pierwszej nowej linii) na standardowe wyjście.
q (1)
Zakończ. Przejdź na koniec skryptu. Nie rozpoczynaj nowego cyklu.
r "rplik" (1)
Czytaj zawartość rpliku. Wstaw ją na wyjściu przed przeczytaniem
następnej linii wejściowej.
s /wyrażenie regularne/zamiennik/flagi (2)
Podmień znalezione wyrażenia regularne na zamiennik (w bieżącym
buforze tekstowym). Zamiast `/' można użyć dowolnego znaku. Dla
dokładniejszego opisu zobacz ed (1). Flagi to zero lub więcej z
następujących:
g -- Globalnie. Podmieniaj wszystkie niezachodzące na siebie
instancje
łańcucha, a nie tylko pierwszą z nich.
p -- Drukuj przestrzeń wzorców po dokonaniu podmiany.
w -- Zapisuj. Doklej bieżący bufor tekstowy do argumentu
plikowego, tak jak
w komendzie w (o ile zostanie dokonana podmiana). Standardowe
wyjście
jest używane jeśli nie podano argumentu plikowego.
t "etykieta" (2)
Gałęziowy test `jeżeli'. Przejdź do komendy `:' o podanej
etykiecie, jeśli dokonano jakichkolwiek podmian od ostatniego
odczytu linii wejściowej, lub wywołania `t' lub `T'. Jeśli nie
podano etykiety, przejdź na koniec skryptu.
T "etykieta" (2)
Przeskocz przy błędzie. Przejdź do komendy `:' o podanej
etykiecie, jeśli nie dokonano podmian od ostatniego wczytania
linii wejściowej, lub od użycia komendy `t' lub `T'. Jeśli nie
podano etykiety, przejdź na koniec pliku.
w "wplik" (2)
Zapisz. Doklej bieżący bufor tekstowy do wpliku.
W "wplik" (2)
Zapisz pierwszą linię. Doklej pierwszą linię bieżącego bufora
tekstowego do wpliku.
x (2)
Wymień zawartość bieżącego bufora tekstowego i miejsca
przechowywania.
y /łańcuch1/łańcuch2/ (2)
Tłumacz. Podmień każde pojawienie się znaku ze łańcucha1
odpowiadającym mu znakiem z łańcucha2. Długości tych znaków muszą
być identyczne.
! "komenda" (2)
Wszystko-poza. Zastosuj funkcję (lub grupę, jeśli funkcją jest
`{') tylko do linii nie wybranych przez adres(y).
: "etykieta" (0)
Komenda ta nie robi niczego poza przechowywaniem etykiety dla
komend `b' i `t'.
= (1)
Wstaw bieżący numer linii na standardowe wyjście jako linię.
{ (2)
Wywołaj następujące komendy, aż do zamykającego `}' tylko jeśli
bieżąca linia odpowiada adresowi lub podanemu zasięgowi adresów.
Pusta komenda jest ignorowana.
PRZENOŚNOŚĆ
Narzędzie to było wyprowadzone z UNIX-a 4.1 BSD i (o ile wiadomo
autorowi) jest z nim kompatybilne. Wszystkie udokumentowane właściwości
seda z BSD są wspierane.
Pominięto jedną nieudokumentowaną właściwość (prowadzący `n' w
pierwszym komentarzu, mający takie same działanie jak -n opcja linii
komend).
Poprawiono następujące błędy i ograniczenia:
* Nie ma ukrytego limitu długości (40 w sedzie BSD) na długości nazw
plików.
* Nie ma limitu długości (8 w sedzie BSD) na długość etykiet.
* Komenda `exchange' działa teraz dla długich wzorców i miejsc
przechowania.
Poczyniono następujące rozszerzenia istniejących komend:
* komendy a, i nie naciskają na prowadzący znak odwrotnego
ukośnika-\n w tekście.
* komendy r, w nie naciskają na białą spację przed nazwą pliku.
* Opcje g, p i P w komendach s mogą być podawane w dowolnej
kolejności.
Poczyniono pewne rozszerzenia do składni wyrażeń regularnych:
* \t jest rozpoznawane jako sekwencja specjalna tabulacji.
* Wewnątrz RE, + woła o 1..n powtórzeń poprzedniego wzorca.
Następujące właściwości są całkowicie nowe:
* Komenda l (listuj, nieudokumentowana i słabsza w BSD)
* Komenda W (zapisz pierwszą linię przestrzeni wzorców do pliku).
* Komenda T (przeskocz, jeśli nie udało się podstawienie).
* Dozwolone są w liniach komend kończące komentarze.
Dodatkowo, komunikaty o błędach seda stały się bardziej konkretne i
informatywne.
Implementacja jest również sporo mniejsza i szybsza niż sed z 4.1 BSD.
Używa jedynie standardowej biblioteki I/O i exit(3).
UWAGA
Jest to komponent freeware systemów operacyjnych GNU i MINIX.
Użytkownik ma więc pozwolenie na używanie, modyfikowanie i reprodukcję
oraz dystrybucję jego pod następującymi warunkami:
1. Notka o autorze, pojawiająca się w każdym pliku źródłowym nie może
zostać skasowana, ani poprawiana.
2. Forma obiektowa nie może być rozprowadzana bez źródeł.
ZOBACZ TAKŻE
ed(1), grep(1), awk(1), lex(1), regexp(5)
AUTOR
Ta strona podręcznika man została napisana przez Erica S. Raymonda
<esr@snark.thyrsus.com>, a załączony pakiet jest z GNU.
Listopad 19, 1995 sed(1)