Wprowadzenie do sed
sed to edytor strumieniowy obecny w systemach uniksowych, służący do przetwarzania tekstu. Jego prostota idzie w parze z rozbudowanymi możliwościami, co czyni go użytecznym narzędziem, w tym przy konwersji programów. Sed jest uznawany za język programowania pełny w sensie Turinga.
Historia i ewolucja
Program sed powstał w 1973 roku, stworzony przez Lee E. McMahona w Bell Labs. Wyewoluował z polecenia grep i jest podobny do programu ed, a także do AWK. Sed oraz AWK były inspiracją dla języka Perl. Istnieje również zmodyfikowana wersja sed, znana jako minised, wprowadzona przez Erica S. Raymonda, która oferuje mniejsze zużycie pamięci i większą szybkość, choć nie jest tak rozbudowana jak standardowy sed.
Składnia i opcje
Program sed można uruchamiać z różnymi opcjami, w tym:
- -n – wypisuje tylko linie, gdzie wykonano komendę p lub s z parametrem p.
- -e – do przetwarzania wielu poleceń lub skryptów.
- -f – wczytywanie komend z pliku.
- -v – wyświetla informacje o programie.
- -t – wyłącza nieistotne wyjścia powłoki.
- -q – eliminuje ostrzeżenia o podstawieniach.
- -i – edycja w miejscu, zapis do oryginalnego pliku.
- -b – tworzy kopię zapasową oryginalnego pliku.
Przykłady użycia
Aby zastąpić pierwsze wystąpienie tekstu w pliku, używamy komendy:
sed -i 's/wyraz1/wyraz2/' plik1
Jeśli chcemy zastąpić wszystkie wystąpienia w wierszu, dodajemy opcję /g:
sed -i 's/wyraz1/wyraz2/g' plik1
Aby zapisać wynik do innego pliku:
sed 's/wyraz1/wyraz2/g' plik1 > plik2
Możemy także używać sed w połączeniu z innymi poleceniami:
echo "tekst do przetworzenia" | sed "s/do przetworzenia/przetworzony/"
W przypadku wielu zastąpień w jednym poleceniu:
echo "tekst do przetworzenia" | sed -e 's/tekst/Tekst/;s/do/po/;s/przetworzenia/przetworzeniu/'
Warto korzystać z klas znakowych podczas wyszukiwania wzorców.