Provided by: manpages-pl_20060617-1_all bug

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)