sed
Adres en adresbereik
Zoeken…
Invoering
Sed-opdrachten kunnen worden opgegeven om alleen op bepaalde regels te werken door adressen of adresbereiken te gebruiken .
Specifieke regel
$ cat ip.txt
address
range
substitution
pattern
sample
N de lijn
$ sed -n '2p' ip.txt range $ sed '3d' ip.txt address range pattern sample
Laatste lijn
$ sed -n '$p' ip.txt sample
Specifiek lijnenbereik
$ cat ip.txt
address
range
substitution
pattern
sample
Het opgegeven bereik is inclusief die regelnummers
$ sed -n '2,4p' ip.txt range substitution pattern
$
kan worden gebruikt om de laatste regel op te geven. Voor de duidelijkheid kan ruimte tussen adres en opdracht worden gebruikt$ sed -n '3,$ s/[aeiou]//gp' ip.txt sbstttn pttrn smpl
i de lijn naar i + j de lijn
$ sed '2,+2d' ip.txt address sample
i de lijn en i + j , i +2 j , i +3 j , etc.
$ sed -n '1~2p' ip.txt address substitution sample
Lijnen die overeenkomen met het reguliere expressiepatroon
$ cat ip.txt
address
range
substitution
pattern
sample
Add Sub Mul Div
Lijnen die bij een patroon passen
$ 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
Bereik van patronen
$ sed -n '/add/,/sub/p' ip.txt address range substitution $ sed -n '/a/,/e/p' ip.txt address range pattern sample
Notitie
- In het tweede voorbeeld kwam het overeen met twee bereiken - lijnen
1,2
en lijnen4,5
- Zie Verschillende scheidingstekens gebruiken voor het gebruik van andere tekens in plaats van
/
voor het opgeven van het patroon
Hoofdletterongevoelige wedstrijd
$ 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
Bereik opgeven met zowel nummer als patroon
$ cat ip.txt
address
range
substitution
pattern
sample
Add Sub Mul Div
Lijnnummer naar lijn passend patroon
$ sed -n '2,/pat/p' ip.txt range substitution pattern
Lijnaanpassingspatroon aan lijnnummer
$ sed '/pat/,$d' ip.txt address range substitution
Lijnaanpassingspatroon plus aantal regels dat erop volgt
$ sed -n '/add/I,+1p' ip.txt address range Add Sub Mul Div
0
kan worden gebruikt als startlijnnummer om het einde van het bereik aan te geven wanneer het patroon overeenkomt met de eerste invoerregel$ 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
Negatief adresbereik
$ cat ip.txt
address
range
substitution
1234
search pattern
sample
Add Sub Mul Div
Andere regels verwijderen dan opgegeven 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
Zoek en vervang op lijnen die niet overeenkomen met een patroon
$ 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