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