Sed (program)
![]() | Ten artykuł od 2021-03 zawiera treści, przy których brakuje odnośników do źródeł. Należy dodać przypisy do treści niemających odnośników do źródeł. Dodanie listy źródeł bibliograficznych jest problematyczne, ponieważ nie wiadomo, które treści one uźródławiają. Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary) Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu. Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu. |
sed (ang. stream editor) – edytor strumieniowy[1], który występuje w zestawie komend systemów uniksowych, a służy do przetwarzania tekstu. Łączy w sobie prostotę oraz szeroki wachlarz możliwości. Znajduje też zastosowanie przy pisaniu programów konwertujących. Jest on językiem programowania zupełnym w sensie Turinga.
Historia powstania i powiązania
Sed jest jednym z pierwszych poleceń systemów uniksowych, polegającym na przetwarzaniu strumieni tekstowych. Wyewoluował z polecenia grep, jego składnia oparta jest na programie ed, swoimi możliwościami zbliżony jest do AWK. Zarówno sed, jak i AWK, uznawane są za inspirację Perla. Istnieje rozszerzenie Super-sed zawierające wyrażenia regularne kompatybilne z Perlem (między innymi s/// jest jednym z poleceń Perla). Program sed jest standardowo dostępny w większości systemów operacyjnych. Został stworzony w 1973 roku przez Lee E. McMahona dla organizacji Bell Labs. Innym wariantem seda jest minised, wprowadzony przez Erica S. Raymonda, obecnie prowadzony przez René Rebe. Zawiera on kilka rozszerzeń BSD, jednak całokształt nie jest tak rozbudowany, jak standardowy sed. Jego zaletą jest szybkość oraz to, że zużywa mało pamięci.
Składnia
Opcje, z którymi można uruchomić program:
- -n – na wyjściu będą wypisywane jedynie linie, na których wykonano komendę p lub s z parametrem p.
- -e – stosujemy, gdy przetwarzamy wiele poleceń lub skryptów.
- -f – dzięki temu argumentowi, wczytujemy komendy z pliku.
- -v – wyświetlenie informacji o programie.
- -t – wyłączenie wyjścia z istotnych komend powłoki, które są wykonywane.
- -q – likwiduje ostrzeżenia o rezultatach podstawienia.
- -i – edycja w miejscu, zapisuje zmiany do oryginalnego pliku
- -b – zapisanie kopii zapasowej oryginalnego pliku.
Użycie seda za pośrednictwem CLI (wiersza poleceń):
sed -i 's/wyraz1/wyraz2/' plik1
Wtedy w pliku plik1
, w każdym wierszu pierwsze wystąpienie ciągu znaków wyraz1
zostanie zastąpione przez wyraz2
. Komenda s/ oznacza konieczność zastąpienia ciągu znakowego. Jeżeli zamiana ma nie dotyczyć tylko pierwszego, a wszystkich wystąpień w wierszu, należy użyć opcji /g oznaczającej wystąpienia globalne.
W przypadku zapisu wyniku do edytowanego pliku:
sed -i 's/wyraz1/wyraz2/g' plik1
W przypadku potrzeby zapisania zmiany do pliku o nazwie plik2
:
sed 's/wyraz1/wyraz2/g' plik1 > plik2
Można również użyć komendy bezpośrednio w pliku:
echo "tekst do przetworzenia" | sed "s/do przetworzenia/przetworzony/"
Jeżeli wymagane jest użycie kilka razy seda na jednym tekście, można zamiast:
echo "tekst do przetworzenia" | sed 's/tekst/Tekst/' | sed 's/do/po/' | sed 's/przetworzenia/przetworzeniu/'
użyć polecenia tylko raz, a następne poprzedzać jedynie średnikiem:
echo "tekst do przetworzenia" | sed -e 's/tekst/Tekst/;s/do/po/;s/przetworzenia/przetworzeniu/'
Podczas wyszukiwania wzorca, można skorzystać ze znaków specjalnych[2]:
Znak | Znaczenie | Przykład użycia |
---|---|---|
^ | Początek wiersza | /^slowo/ – Wiersz zaczynający się od slowo |
$ | Koniec wiersza | /^$/ – Wiersz pusty |
. | Pojedynczy znak | /./ – Wiersz zawierający co najmniej jeden znak |
* | Zero lub więcej wystąpień poprzedniego znaku | / */ – Wiersz zawierający zero lub więcej sąsiadujących spacji |
[ ] | Wszystkie znaki pomiędzy '[' i ']' | /[abc]/ – Wiersz zawierający a , b lub c |
Również ze względu na ich uniwersalność, w dobrym tonie jest używanie klas znakowych podczas wyszukiwania wzorca.
Klasa znakowa | Znaczenie |
---|---|
[:alnum:] | Znaki alfanumeryczne [a-z A-Z 0-9] |
[:alpha:] | Znaki alfabetyczne [a-z A-Z] |
[:blank:] | Spacje lub tabulatory |
[:cntrl:] | Dowolny znak kontrolny |
[:digit:] | Cyfry [0-9] |
[:graph:] | Znaki drukowalne (bez odstępów) |
[:lower:] | Małe litery [a-z] |
[:print:] | Znaki drukowalne z odstępami |
[:punct:] | Znaki drukowalne z wyjątkiem odstępów, liter i cyfr |
[:space:] | Wszystkie znaki odstępu |
[:upper:] | Duże litery [A-Z] |
[:xdigit:] | Cyfry w systemie szesnastkowym [0-9 a-f A-F] |
Przypisy
Linki zewnętrzne
- opis szczegółowy polecenia sed na stronie gnu.org
- Witryna o sed i kilka uwag o aspektach pracy w Windows/DOS
- Maszyna Turinga w sed
- GND: 4262086-7
- p
- d
- e
System plików | |
---|---|
Procesy | |
Środowisko użytkownika | |
Przetwarzanie tekstu | |
Wbudowane w powłokę |
|
Komunikacja | |
Wyszukiwanie | |
Dokumentacja |
|
Różne |
|