sed
Adres i zakres adresów
Szukaj…
Wprowadzenie
Komendy Sed można określić, aby działały tylko w niektórych liniach przy użyciu adresów lub zakresów adresów .
Określona linia
$ cat ip.txt
address
range
substitution
pattern
sample
N- ty wiersz
$ sed -n '2p' ip.txt range $ sed '3d' ip.txt address range pattern sample
Ostatni wiersz
$ sed -n '$p' ip.txt sample
Określony zakres linii
$ cat ip.txt
address
range
substitution
pattern
sample
Określony zakres obejmuje te numery linii
$ sed -n '2,4p' ip.txt range substitution pattern
$
może być użyte do określenia ostatniego wiersza. Dla zachowania przejrzystości można użyć spacji między adresem a poleceniem$ sed -n '3,$ s/[aeiou]//gp' ip.txt sbstttn pttrn smpl
i- ta linia do i + j- ta linia
$ sed '2,+2d' ip.txt address sample
i ta linia oraz i + j , i +2 j , i +3 j itp.
$ sed -n '1~2p' ip.txt address substitution sample
Linie pasujące do wzorca wyrażeń regularnych
$ cat ip.txt
address
range
substitution
pattern
sample
Add Sub Mul Div
Linie pasujące do wzoru
$ sed '/add/d' ip.txt range substitution pattern sample Add Sub Mul Div $ sed -n '/t/p' ip.txt substitution pattern $ sed -n '/[A-Z]/ s| |/|gp' ip.txt Add/Sub/Mul/Div
Zakres wzorów
$ sed -n '/add/,/sub/p' ip.txt address range substitution $ sed -n '/a/,/e/p' ip.txt address range pattern sample
Uwaga
- W drugim przykładzie dopasował dwa zakresy - linie
1,2
i linie4,5
- Zobacz Używanie różnych separatorów na temat używania innych znaków zamiast
/
celu określenia wzorca
Dopasowanie bez rozróżniania wielkości liter
$ sed -n '/add/Ip' ip.txt address Add Sub Mul Div $ sed -n '/add/I,/sub/p' ip.txt address range substitution Add Sub Mul Div
Określanie zakresu przy użyciu zarówno liczby, jak i wzorca
$ cat ip.txt
address
range
substitution
pattern
sample
Add Sub Mul Div
Wzorzec dopasowywania numeru linii do linii
$ sed -n '2,/pat/p' ip.txt range substitution pattern
Wzór dopasowania linii do numeru linii
$ sed '/pat/,$d' ip.txt address range substitution
Wzór dopasowania linii plus liczba linii po nim
$ sed -n '/add/I,+1p' ip.txt address range Add Sub Mul Div
0
może być użyte jako numer linii początkowej do sygnalizowania końca zakresu, gdy wzór pasuje do pierwszej linii wejścia$ sed -n '0,/r/p' ip.txt address $ sed -n '1,/r/p' ip.txt address range $ sed -n '0,/u/p' ip.txt address range substitution
Negujący zakres adresów
$ cat ip.txt
address
range
substitution
1234
search pattern
sample
Add Sub Mul Div
Usuwanie wierszy innych niż podany adres
$ sed '/[0-9]/!d' ip.txt 1234 $ sed -n '/[0-9]/p' ip.txt 1234 $ sed '$!d' ip.txt Add Sub Mul Div $ sed -n '$p' ip.txt Add Sub Mul Div
Wyszukaj i zamień na liniach niezgodnych ze wzorem
$ sed '/ /! s/^/#/' ip.txt #address #range #substitution #1234 search pattern #sample Add Sub Mul Div $ sed '/add/,/sub/! s/[aeiou]//gi' ip.txt address range substitution 1234 srch pttrn smpl dd Sb Ml Dv