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.txt

otrzymujemy:

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: txt

Rozwiązanie

sed -E 's/(.+)\.(.+)/nazwa: \1, rozszerzenie: \2/' PLIK3.txt

Zadania

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/2021

zmieniamy na

1979-3-11
1983-10-1
2002-5-10
2014-3-17
2021-4-17

Zadanie 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@domena

Zadanie 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.