Suche…


Einführung

Sed-Befehle können so festgelegt werden, dass sie nur für bestimmte Zeilen verwendet werden, indem Adressen oder Adressbereiche verwendet werden .

Spezifische Zeile

$ cat ip.txt
address
range
substitution
pattern
sample
  • N- te Linie

    $ sed -n '2p' ip.txt 
    range
    
    $ sed '3d' ip.txt 
    address
    range
    pattern
    sample
    
  • Letzte Linie

    $ sed -n '$p' ip.txt 
    sample
    

Spezifischer Linienbereich

$ cat ip.txt 
address
range
substitution
pattern
sample
  • Der angegebene Bereich umfasst diese Zeilennummern

    $ sed -n '2,4p' ip.txt 
    range
    substitution
    pattern
    
  • $ kann die letzte Zeile angegeben werden. Zwischen Adresse und Befehl kann zur besseren Übersicht ein Leerzeichen verwendet werden

    $ sed -n '3,$ s/[aeiou]//gp' ip.txt 
    sbstttn
    pttrn
    smpl
    

GNU sed
  • i- te Zeile bis i + j- te Zeile

    $ sed '2,+2d' ip.txt 
    address
    sample
    
  • i- te Linie und i + j , i + 2 j , i + 3 j usw.

    $ sed -n '1~2p' ip.txt 
    address
    substitution
    sample
    

Zeilen, die dem regulären Ausdruck entsprechen

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Linien, die einem Muster entsprechen

    $ 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
    
  • Reihe von Mustern

    $ sed -n '/add/,/sub/p' ip.txt 
    address
    range
    substitution
    
    $ sed -n '/a/,/e/p' ip.txt 
    address
    range
    pattern
    sample
    

Hinweis

  • Im zweiten Beispiel stimmte es mit zwei Bereichen überein - Zeilen 1,2 und Zeilen 4,5
  • Siehe Verwenden verschiedener Trennzeichen zur Verwendung anderer Zeichen anstelle von / zur Angabe des Musters

GNU sed
  • Groß- und Kleinschreibung wird nicht berücksichtigt

    $ 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
    

Festlegen des Bereichs anhand von Nummer und Muster

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Zeilennummer für übereinstimmendes Muster

    $ sed -n '2,/pat/p' ip.txt 
    range
    substitution
    pattern
    
  • Zeilenanpassungsmuster an Zeilennummer

    $ sed '/pat/,$d' ip.txt 
    address
    range
    substitution
    

GNU sed
  • Zeilenanpassungsmuster plus Anzahl der nachfolgenden Zeilen

    $ sed -n '/add/I,+1p' ip.txt 
    address
    range
    Add Sub Mul Div
    
  • 0 kann als Startzeilennummer verwendet werden, um das Bereichsende zu signalisieren, wenn das Muster der ersten Zeile des Eingangs entspricht

    $ 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
    

Adressbereich negieren

$ cat ip.txt 
address
range
substitution
1234
search pattern
sample
Add Sub Mul Div
  • Löschen von anderen Zeilen als der angegebenen Adresse

    $ 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
    
  • Suchen und ersetzen Sie Zeilen, die keinem Muster entsprechen

    $ 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
    


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow