Ricerca…


introduzione

I comandi Sed possono essere specificati per agire solo su determinate linee utilizzando indirizzi o intervalli di indirizzi .

Linea specifica

$ cat ip.txt
address
range
substitution
pattern
sample
  • N linea

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

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

Gamma specifica di linee

$ cat ip.txt 
address
range
substitution
pattern
sample
  • L'intervallo specificato è comprensivo di quei numeri di riga

    $ sed -n '2,4p' ip.txt 
    range
    substitution
    pattern
    
  • $ può essere usato per specificare l'ultima riga. Lo spazio può essere usato tra l'indirizzo e il comando per chiarezza

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

GNU sed
  • ho la linea per i + j th line

    $ sed '2,+2d' ip.txt 
    address
    sample
    
  • I th line e i + j , i +2 j , i +3 j , ecc.

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

Linee che corrispondono al modello di espressione regolare

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Linee che corrispondono a un modello

    $ 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
    
  • Gamma di modelli

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

Nota

  • Nel secondo esempio, corrispondeva a due intervalli: righe 1,2 e righe 4,5
  • Vedi Usare diversi delimitatori su come usare altri caratteri invece di / per specificare il modello

GNU sed
  • Corrispondenza insensibile alle maiuscole

    $ 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
    

Specifica dell'intervallo utilizzando sia il numero che il modello

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Linea numero per allineare il modello di corrispondenza

    $ sed -n '2,/pat/p' ip.txt 
    range
    substitution
    pattern
    
  • Linea corrispondente al numero di linea

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

GNU sed
  • Modello di corrispondenza delle linee più il numero di linee che lo seguono

    $ sed -n '/add/I,+1p' ip.txt 
    address
    range
    Add Sub Mul Div
    
  • 0 può essere usato come numero della linea di partenza per segnalare la fine della gamma quando il modello corrisponde alla prima riga di input

    $ 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
    

Negazione dell'intervallo di indirizzi

$ cat ip.txt 
address
range
substitution
1234
search pattern
sample
Add Sub Mul Div
  • Eliminazione di righe diverse dall'indirizzo specificato

    $ 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
    
  • Cerca e sostituisci su linee che non corrispondono a un modello

    $ 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow