sed(1) sed(1)
sed - edytor strumieniowy
sed [-n] [-g] [-e skrypt ] [-f splik ] [ plik ] ...
Sed kopiuje podane pliki (lub domylnie standardowe wejcie) na standard-
owe wyjcie, przy okazji edytujc przepywajce dane wedug komend zadanych
w skrypcie.
Opcja -e zacza pojedyncz komend edycyjn z nastpujcego po niej argu-
mentu; jeli jest ich [komend] wicej, to s one wykonywane w kolejnoci
pojawienia si. Jeli jest tam tylko opcja -e i nie ma -f, flag -e mona
pomin.
Opcja -f powoduje, e komendy s pobieranego z pliku "splik"; jeli jest
ich kilka, to s one wykonywane w kolejnoci pojawienia si; komendy -e i
-f mona ze sob czy.
Opcja -g powoduje, e sed zachowuje si tak, jakby kada z komend skryptu
miaa przyrostek g.
Opcja -n hamuje domylne wyjcie.
Skrypt skada si z komend, po jednej na lini, uoonych w nastpujcej
postaci:
[adres [, adres] ] funkcja [argumenty]
Normalnie sed cyklicznie kopiuje linie wejcia do biecego bufora tek-
stowego, a nastpnie dokonuje kolejno wszystkich komend edycyjnych,
ktrych adresy wybieraj bufor, a potem przesya bufor na standardowe wyj-
cie i czyci go.
Opcja -n hamuje normalne wyjcie (tak, e ma miejsce tylko wyjcie p i w).
Podobnie niektre komendy (n,M) robi samodzielne odczyty linii, a niek-
tre inne (d,D) powoduj, e komendy nastpujce za nimi w danym skrypcie s
pomijane (komenda D hamuje te czyszczenie biecego bufora tekstowego, co
ma normalnie miejsce przed nastpnym cyklem).
Pomocnym jest te wiedzie, e istnieje drugi bufor (nazywany `miejscem
przechowywania', ktry moe by kopiowany, lub doklejany, lub skadany z
biecym buforem.
Adres jest: liczb dziesitn (ktra odpowiada linii, gdzie numery linii to
liczby zaczynajce si od 1, do ostatniej linii pliku), lub `$', ktry
adresuje ostatni lini wyjcia, lub kontekstowym adresem, ktry jest
`/wyraeniem regularnym/' w zmodyfikowanym stylu ed (1), wic:
(1) Sekwencja specjalna `0 odpowiada nowej linii osadzonej w buforze,
a `' odpowiada tabulacji.
(2) Linia komend bez adresw wybiera kady bufor.
(3) Linia komend z jednym adresem wybiera kady bufor, ktry odpowiada
temu adresowi.
(4) Linia komend z dwoma adresami odpowiada wcznemu zasigowi od pier-
wszego bufora wejciowego, do drugiego, odpowiadajcego adresowi.
(Jeli drugi adres jest liczb mniejsz lub rwn numerowi podanemu
najpierw, to wybierana jest tylko jedna linia.) Gdy dopasowany
jest drugi adres, sed zaczyna ponownie szuka pierwszego; tak wic
dowolna liczba tych zasigw bdzie porwnywana.
Operator negacji `!', znany z C, moe i tu mie zastosowanie, wskazujc, e
komenda odnosi si do linii nie wybranych w adresach.
W nastpujcych funkcjach, maksymalna liczba adresw jest wskazana w naw-
iasie.
Argument oznaczony jako "tekst" skada si z jednej, lub wikszej iloci
linii, w ktrych wszystkie, poza ostatni musz koczy si `', aby ukry now
lini.
Odwrotne ukoniki w tekcie s traktowane jak odwrotne ukoniki w acuchu
zamiany komendy `s' i mog by uywane do chronienia pocztkowych biaych
spacji.
Argument oznaczony jako "rplik" i "wplik" musi by ostatnim w linii
komend. Kady wplik jest tworzony zanim rozpocznie si przetwarzanie.
Dopuszczaln iloci argumentw wplikw jest 10.
a "tekst" (1)
Doklej. Docz tekst na wyjcie przed odczytaniem nastpnej linii wej-
cia.
b "etykieta" (2)
Przejd si do komendy `:', przechowujcej etykiet. Jeli nie podano
etykiety, przejd na koniec skryptu.
c "tekst" (2)
Zmie. Skasuj biecy tekst z bufora. Z adresem 0 lub 1, lub na kocu
dwuadresowego zasigu, docz tekst na wyjciu. Rozpocznij nastpny
cykl.
d (2)
Skasuj biecy bufor tekstowy. Rozpocznij nowy cykl.
D (2)
Skasuj pierwsz lini biecego bufora tekstowego (wszystkie znaki, a
do pierwszej nowej linii). Rozpocznij nowy cykl.
g (2)
Zamie zawarto biecego bufora tekstowego z zawartoci miejsca prze-
chowywania.
G (2)
Doklej zawarto miejsca przechowywania do biecego bufora tek-
stowego.
h (2)
Skopiuj biecy bufor tekstowy do miejsca przechowywania.
H (2)
Doklej kopi biecego bufora tekstowego do miejsca przechowywania.
i "tekst" (1)
Wstaw. Wstaw tekst na standardowe wyjcie.
l (2)
Listuj. Wysya przestrze wzorcw na standardowe wyjcie. Opcja "w"
moe wystpi jak w komendzie s, opisanej niej. 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 odpowiadajcy dwm cyfrom szesnastkowym.
n (2)
Kopiuj biecy bufor tekstowy na standardowe wyjcie. Wczytaj do
bufora now lini.
N (2)
Doklej nastpn lini wejcia do biecego bufora tekstowego, wstawiajc
midzy nie osadzon now lini. Zmienia si biecy numer linii.
p (2)
Drukuj. Kopiuj biecy bufor tekstowy na standardowe wyjcie.
P (2)
Kopiuj pierwsz lini biecego bufora tekstowego (wszystkie znaki a
do pierwszej nowej linii) na standardowe wyjcie.
q (1)
Zakocz. Przejd na koniec skryptu. Nie rozpoczynaj nowego cyklu.
r "rplik" (1)
Czytaj zawarto rpliku. Wstaw j na wyjciu przed przeczytaniem
nastpnej linii wejciowej.
s /wyraenie regularne/zamiennik/flagi (2)
Podmie znalezione wyraenia regularne na zamiennik (w biecym
buforze tekstowym). Zamiast `/' mona uy dowolnego znaku. Dla
dokadniejszego opisu zobacz ed (1). Flagi to zero lub wicej z
nastpujcych:
g -- Globalnie. Podmieniaj wszystkie niezachodzce na siebie
instancje
acucha, a nie tylko pierwsz z nich.
p -- Drukuj przestrze wzorcw po dokonaniu podmiany.
w -- Zapisuj. Doklej biecy bufor tekstowy do argumentu plikowego,
tak jak
w komendzie w (o ile zostanie dokonana podmiana). Standardowe
wyjcie
jest uywane jeli nie podano argumentu plikowego.
t "etykieta" (2)
Gaziowy test `jeeli'. Przejd do komendy `:' o podanej etykiecie,
jeli dokonano jakichkolwiek podmian od ostatniego odczytu linii
wejciowej, lub wywoania `t' lub `T'. Jeli nie podano etykiety,
przejd na koniec skryptu.
T "etykieta" (2)
Przeskocz przy bdzie. Przejd do komendy `:' o podanej etykiecie,
jeli nie dokonano podmian od ostatniego wczytania linii wejciowej,
lub od uycia komendy `t' lub `T'. Jeli nie podano etykiety, przejd
na koniec pliku.
w "wplik" (2)
Zapisz. Doklej biecy bufor tekstowy do wpliku.
W "wplik" (2)
Zapisz pierwsz lini. Doklej pierwsz lini biecego bufora tekstowego
do wpliku.
x (2)
Wymie zawarto biecego bufora tekstowego i miejsca przechowywania.
y /acuch1/acuch2/ (2)
Tumacz. Podmie kade pojawienie si znaku ze acucha1 odpowiadajcym
mu znakiem z acucha2. Dugoci tych znakw musz by identyczne.
! "komenda" (2)
Wszystko-poza. Zastosuj funkcj (lub grup, jeli 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 biecy numer linii na standardowe wyjcie jako lini.
{ (2)
Wywoaj nastpujce komendy, a do zamykajcego `}' tylko jeli bieca
linia odpowiada adresowi lub podanemu zasigowi adresw.
Pusta komenda jest ignorowana.
Narzdzie to byo wyprowadzone z UNIX-a 4.1 BSD i (o ile wiadomo
autorowi) jest z nim kompatybilne. Wszystkie udokumentowane waciwoci
seda z BSD s wspierane.
Pominito jedn nieudokumentowan waciwo (prowadzcy `n' w pierwszym komen-
tarzu, majcy takie same dziaanie jak -n opcja linii komend).
Poprawiono nastpujce bdy i ograniczenia:
* Nie ma ukrytego limitu dugoci (40 w sedzie BSD) na dugoci nazw
plikw.
* Nie ma limitu dugoci (8 w sedzie BSD) na dugo etykiet.
* Komenda `exchange' dziaa teraz dla dugich wzorcw i miejsc prze-
chowania.
Poczyniono nastpujce rozszerzenia istniejcych komend:
* komendy a, i nie naciskaj na prowadzcy znak odwrotnego ukonika-\n
w tekcie.
* komendy r, w nie naciskaj na bia spacj przed nazw pliku.
* Opcje g, p i P w komendach s mog by podawane w dowolnej kolejnoci.
Poczyniono pewne rozszerzenia do skadni wyrae regularnych:
* \t jest rozpoznawane jako sekwencja specjalna tabulacji.
* Wewntrz RE, + woa o 1..n powtrze poprzedniego wzorca.
Nastpujce waciwoci s cakowicie nowe:
* Komenda l (listuj, nieudokumentowana i sabsza w BSD)
* Komenda W (zapisz pierwsz lini przestrzeni wzorcw do pliku).
* Komenda T (przeskocz, jeli nie udao si podstawienie).
* Dozwolone s w liniach komend koczce komentarze.
Dodatkowo, komunikaty o bdach seda stay si bardziej konkretne i infor-
matywne.
Implementacja jest rwnie sporo mniejsza i szybsza ni sed z 4.1 BSD.
Uywa jedynie standardowej biblioteki I/O i exit(3).
Jest to komponent freeware systemw operacyjnych GNU i MINIX. Uytkownik
ma wic pozwolenie na uywanie, modyfikowanie i reprodukcj oraz dystry-
bucj jego pod nastpujcymi warunkami:
1. Notka o autorze, pojawiajca si w kadym pliku rdowym nie moe zosta
skasowana, ani poprawiana.
2. Forma obiektowa nie moe by rozprowadzana bez rde.
ed(1), grep(1), awk(1), lex(1), regexp(5)
Ta strona podrcznika man zostaa napisana przez Erica S. Raymonda
<esr [AT] snark.com>, a zaczony pakiet jest z GNU.
Listopad 19, 1995 sed(1)