Wyrażenia regularne
Table of Contents
Przykłady
Przykład 1
Użyj sed i wyrażenia regularnego z nawiasami i odwołaniami do grup aby wypisać osobno części bazowe oraz rozszerzenia plików. Dla poniższej zawartości w pliku PLIK3.txt:
foo.txt
bar.txt
foo1.txt
bar1.doc
foobar.txt
foo.doc
bar.doc
dataset.txt
purchase.db
purchase1.db
barfoobar.doc
purchase2.db
purchase3.db
purchase.idx
foo2.txt
bar.txtotrzymujemy:
nazwa: foo, rozszerzenie: txt
nazwa: bar, rozszerzenie: txt
nazwa: foo1, rozszerzenie: txt
nazwa: bar1, rozszerzenie: doc
nazwa: foobar, rozszerzenie: txt
nazwa: foo, rozszerzenie: doc
nazwa: bar, rozszerzenie: doc
nazwa: dataset, rozszerzenie: txt
nazwa: purchase, rozszerzenie: db
nazwa: purchase1, rozszerzenie: db
nazwa: barfoobar, rozszerzenie: doc
nazwa: purchase2, rozszerzenie: db
nazwa: purchase3, rozszerzenie: db
nazwa: purchase, rozszerzenie: idx
nazwa: foo2, rozszerzenie: txt
nazwa: bar, rozszerzenie: txtRozwiązanie
sed -E 's/(.+)\.(.+)/nazwa: \1, rozszerzenie: \2/' PLIK3.txtZadania
Zadanie 1
Znajdź ciągi znaków będące datą w formacie amerykańskim MM/DD/YYYY zamień na format YYYY-MM-DD. To znaczy, dzisiaj mamy 9 grudnia 2025 roku, co możemy zapisać jako 12/9/2025 albo 2025-12-9.
Poniższe daty
3/11/1979
10/1/1983
5/10/2002
3/17/2014
4/17/2021zmieniamy na
1979-3-11
1983-10-1
2002-5-10
2014-3-17
2021-4-17Zadanie 2
Napisz wyrażenie regularne, które z znajduje adresy email w formacie:
imie.nazwisko@<domena>.<tld>i zamienia na
imie nazwisko<domena> to ciąg znaków alfanumerycznych,
<tld> to ciąg dowolnych dwóch liter.
Wyrażenie regularne NIE MOŻE pasować do poniższych ciągów znaków:
imienazwisko@<domena>.<tld>
imie_nazwisko@<domena>.<tld>
imie.nazwisko@domenaZadanie 3
Użyj sed-a aby zmienić podany tekst tak, aby każde zdanie zaczynało się od nowej linii. Za koniec zdania przyjmujemy ciąg znaków: kropka, dowolna ilość spacji, wielka litera.
Plik o zawartości:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus maximus imperdiet dui ac mollis. Donec rutrum eleifend ligula, eu venenatis erat efficitur id. Curabitur vehicula magna rutrum rhoncus ullamcorper.Zamieniamy na:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Phasellus maximus imperdiet dui ac mollis.
Donec rutrum eleifend ligula, eu venenatis erat efficitur id.
Curabitur vehicula magna rutrum rhoncus ullamcorper.Materiały
- https://regex101.com/ - interaktywne testowanie wyrażeń regularnych.
- Appendix A w: Mark G. Sobell, A Practical Guide to Linux Commands, Editors, and Shell Programming, Wydanie 3, Pearson, 2012.