SED – czyli jak zamienić ciąg znaków na inny

Za pomocą sed możemy zamienić dowolny ciąg znaków na inny. Jego składnia jest następująca:

sed 's/tekst do zmiany/tekst po zmianie/g' co-zmieniamy.txt > gdzie-zapisujemy.txt

Możemy też dokonać zamiany przy wykorzystaniu echo.

Przykład:

Mamy zdanie: Ala ma kota

echo "Ala ma kota" | sed 's/kota/psa/g'

Da nam wynik: Ala ma psa

echo "Ala ma kota" | sed 's/Ala/Ania/g;s/kota/chomika/g'

Da nam wynik: Ania ma chomika

Jak zamienić polskie literki na ich odpowiedniki bez “ogonków”? Oczywiście możemy również skorzystać z sed. Za jego pomocą zamienimy np: ó na o, Ł na L, ą na a, ę na e itd. i to wszystko za pomocą jednego polecenia. Jego składnia jest następująca – jeżeli chcemy wyświetlić efekt zmiany na ekranie:

sed -e 's/litera stara/litera nowa/g;s/litera stara/litera nowa/g...' plik-do-zmiany.txt

lub jeżeli chcemy przekierować efekt zmiany do pliku:

sed -e 's/litera stara/litera nowa/g;s/litera stara/litera nowa/g...' plik-do-zmiany.txt > plik-po-zmianie.txt

Kolejne warunki zamiany rozdzielamy znakiem średnika “;”

A tak wygląda gotowy skrypt do zmiany wszystkich polskich liter:

sed 's/ż/z/g;s/ź/z/g;s/ć/c/g;s/ń/n/g;s/ą/a/g;s/ś/s/g;s/ł/l/g;s/ę/e/g;s/ó/o/g;s/Ż/Z/g;s/Ź/Z/g;s/Ć/C/g;s/Ń/N/g;s/Ą/A/g;s/Ś/S/g;s/Ł/L/g;s/Ę/E/g;s/Ó/O/' plik-polskie-litery.txt

lub z przekierowaniem wyniku do pliku:

sed 's/ż/z/g;s/ź/z/g;s/ć/c/g;s/ń/n/g;s/ą/a/g;s/ś/s/g;s/ł/l/g;s/ę/e/g;s/ó/o/g;s/Ż/Z/g;s/Ź/Z/g;s/Ć/C/g;s/Ń/N/g;s/Ą/A/g;s/Ś/S/g;s/Ł/L/g;s/Ę/E/g;s/Ó/O/' plik-polskie-litery.txt > plik-bez-polskich.txt

Przed zmianą:

żźćńąśłęóŻŹĆŃĄŚŁĘÓ

Po zmianie:

zzcnasleoZZCNASLEO