sed
Adress och adressintervall
Sök…
Introduktion
Sed-kommandon kan specificeras för att endast fungera på vissa rader med hjälp av adresser eller adressintervall .
Specifik linje
$ cat ip.txt
address
range
substitution
pattern
sample
N: e raden
$ sed -n '2p' ip.txt range $ sed '3d' ip.txt address range pattern sample
Sista raden
$ sed -n '$p' ip.txt sample
Speciellt antal rader
$ cat ip.txt
address
range
substitution
pattern
sample
Område som anges inkluderar dessa linjenummer
$ sed -n '2,4p' ip.txt range substitution pattern
$
kan användas för att ange sista raden. Utrymme kan användas mellan adress och kommando för tydlighet$ sed -n '3,$ s/[aeiou]//gp' ip.txt sbstttn pttrn smpl
i rad till i + j rad
$ sed '2,+2d' ip.txt address sample
i raden och i + j , i +2 j , i +3 j , etc.
$ sed -n '1~2p' ip.txt address substitution sample
Rader som matchar vanligt uttrycksmönster
$ cat ip.txt
address
range
substitution
pattern
sample
Add Sub Mul Div
Linjer som matchar ett mönster
$ 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
Mönsterintervall
$ sed -n '/add/,/sub/p' ip.txt address range substitution $ sed -n '/a/,/e/p' ip.txt address range pattern sample
Notera
- I det andra exemplet matchade det två intervall - rad
1,2
och rad4,5
- Se Använda olika avgränsare om hur man använder andra tecken istället för
/
för att ange mönstret
Fall-okänslig matchning
$ 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
Ange intervall med både nummer och mönster
$ cat ip.txt
address
range
substitution
pattern
sample
Add Sub Mul Div
Radnummer till radmatchningsmönster
$ sed -n '2,/pat/p' ip.txt range substitution pattern
Linjematchningsmönster till radnummer
$ sed '/pat/,$d' ip.txt address range substitution
Linjematchningsmönster plus antal rader som följer den
$ sed -n '/add/I,+1p' ip.txt address range Add Sub Mul Div
0
kan användas som startlinjenummer för att signalera slutområdet när mönstret matchar den första inmatningsraden$ 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
Negera adressintervall
$ cat ip.txt
address
range
substitution
1234
search pattern
sample
Add Sub Mul Div
Radera andra rader än angiven adress
$ 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
Sök och ersätt på rader som inte matchar ett mönster
$ 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