Użycie sed w linii komend:
sed 'polecenia' plik
cat plik | sed 'polecenia'
sed -e 'polecenia_1' -e 'polecenia_2'
Każde polecenie sed może być poprzedzone adresem (lub adresami) określającymi, na których liniach pliku polecenie ma być wykonane.
Przykład:
sed -n '/error/p' logfile.txt
wydrukuje tylko linie zawierające słowo „error” z pliku logfile.txt.
sed '1d' logfile.txt
usunie pierwszą linię z pliku logfile.txt i wydrukuje pozostałe linie na standardowe wyjście.
Procedura działania sed:
Sed czyta plik wejściowy linia po linii i dla każdej linii wykonuje określone polecenia. Ogólny przebieg działania sed można opisać następująco:
-n)Najważniejsze opcje:
| Opcja | Opis |
|---|---|
-n | nie drukuj automatycznie linii (używane z poleceniem p) |
-e | pozwala na wykonanie wielu poleceń sed |
-i | edytuj plik „na miejscu” (in-place) |
-E | użyj rozszerzonych wyrażeń regularnych (ERE) |
| Polecenie | Opis | Przykład | |
|---|---|---|---|
p | wydrukuj linie pasujące | sed -n '/pattern/p' file | |
d | usuń linie pasujące | sed '/pattern/d' file | |
s/old/new/ | zamień old na new | sed 's/old/new/' file | |
s/old/new/g | zamień wszystkie wystąpienia | sed 's/old/new/g' file | |
i\ tekst | wstaw tekst przed linią pasującą | sed '/pattern/i\ tekst' file | |
a\ tekst | dołącz tekst po linii pasującej | sed '/pattern/a\ tekst' file | |
c\ tekst | zamień linię pasującą na tekst | sed '/pattern/c\ tekst' file | |
y/abc/xyz/ | transliteracja znaków | sed 'y/abc/xyz/' file |
|
q | zakończ przetwarzanie po linii pasującej | sed '/pattern/q' file | |
= | wydrukuj numer linii | sed -n '/pattern/=' file |
| Adres | Znaczenie |
|---|---|
| 1 | linia 1 |
| $ | ostatnia linia |
| n | linia n |
| m,n | linie od m do n |
| /pattern/ | linia pasująca do wzorca |
| /pattern1/,/pattern2/ | linie od wzorca pattern1 do pattern2 |
| n~m | co m-ta linia, zaczynając od n |
| % | wszystkie linie |
| 1! | wszystkie linie poza 1 |
| /pattern/! | linie niepasujące do wzorca |
| n,$ | od linii n do końca |
| /pattern/,$ | od linii pasującej do wzorca do końca |
Wypisanie pierwszych 10 linii pliku:
sed -n '1,10p' file.txt
sed '10,$d' file.txt
sed '10q' file.txt
Wypisanie linii zawierających „error”:
sed -n '/error/p' logfile.txt
Usunięcie pustych linii z pliku:
sed '/^$/d' file.txt
Zamiana „foo” na „bar” w pliku:
sed 's/foo/bar/g' file.txt
Zamiana małych liter na wielkie:
sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' file.txt
Zamiana z odniesieniem do znalezionego wzorca:
sed -E 's/error_[0-9]+/[&]/g' logfile.txt
(dodaje nawiasy kwadratowe wokół dopasowanego wyrażenia
Zamiana z odniesieniem do grup:
sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/g' file.txt
(zamienia daty z formatu RRRR-MM-DD na DD/MM/RRRR)
Wypisz liczbę linii w pliku:
sed -n '$=' file.txt