Flaga -e
oznacza, że ma zostać wykonane to co jest przekazane jako parametr ("Append the editing commands specified by the command argument to the list of commands."). Więc masz tutaj 2 polecenia:
-
$p
(spacja jest pomijana w tym wypadku), które ma wypisać (p
) wartość pod adresem $
, czyli ostatnią linię wejścia
-
/\.[a-z]\{3\}/d
, które usuwa (d
, w przeciwieństwie do tego co napisałeś, to poleceniem do usuwania jest samo d
nie /d
) pod adresem /\.[a-z]\{3\}/
, czyli inaczej mówiąc ma usunąć linie w których to wyrażenie regularne będzie dopasowane
Samo wyrażenie regularne jest zamknięte wewnątrz //
i oznacza:
-
\.
dopasuj faktyczną kropkę (samo .
oznacza dowolny znak)
-
[a-z]
dowolny znak w grupie, w tym wypadku litery od a
do z
(ale tylko małe litery)
-
\{3\}
powtórz poprzednie dopasowanie 3 razy (jako grupę, nie wynik)
Czyli inaczej mówiąc, usuń wszystkie linie, w których jest kropka, po której występują 3 małe litery.
Więc całe polecenie zrobi tyle co:
- wypisze ostatnią linię wejścia
- usunie wszystkie linie zawierające
.xxx
gdzie x
to dowolna mała litera.