Recherche…


Introduction

Les commandes Sed peuvent être spécifiées pour agir uniquement sur certaines lignes en utilisant des adresses ou des plages d'adresses .

Ligne spécifique

$ cat ip.txt
address
range
substitution
pattern
sample
  • N ème ligne

    $ sed -n '2p' ip.txt 
    range
    
    $ sed '3d' ip.txt 
    address
    range
    pattern
    sample
    
  • Dernière ligne

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

Gamme spécifique de lignes

$ cat ip.txt 
address
range
substitution
pattern
sample
  • La plage spécifiée inclut ces numéros de ligne

    $ sed -n '2,4p' ip.txt 
    range
    substitution
    pattern
    
  • $ peut être utilisé pour spécifier la dernière ligne. L'espace peut être utilisé entre adresse et commande pour plus de clarté

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

GNU sed
  • i e ligne à i + j e ligne

    $ sed '2,+2d' ip.txt 
    address
    sample
    
  • i e ligne et i + j , i + 2 j , i + 3 j , etc.

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

Lignes correspondant au modèle d'expression régulière

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Lignes correspondant à un motif

    $ 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
    
  • Gamme de motifs

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

Remarque

  • Dans le deuxième exemple, il correspondait à deux plages - lignes 1,2 et lignes 4,5
  • Voir Utilisation de différents délimiteurs pour utiliser d'autres caractères au lieu de / pour spécifier le motif.

GNU sed
  • Correspondance insensible à la casse

    $ 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
    

Spécification de la plage à l'aide du nombre et du motif

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Numéro de ligne au motif correspondant à la ligne

    $ sed -n '2,/pat/p' ip.txt 
    range
    substitution
    pattern
    
  • Modèle de correspondance de ligne avec le numéro de ligne

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

GNU sed
  • Modèle de correspondance de lignes plus le nombre de lignes qui le suivent

    $ sed -n '/add/I,+1p' ip.txt 
    address
    range
    Add Sub Mul Div
    
  • 0 peut être utilisé comme numéro de ligne de départ pour signaler la fin de la plage lorsque le motif correspond à la première ligne d'entrée

    $ 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
    

Plage d'adresses négatives

$ cat ip.txt 
address
range
substitution
1234
search pattern
sample
Add Sub Mul Div
  • Supprimer des lignes autres que l'adresse spécifiée

    $ 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
    
  • Rechercher et remplacer des lignes ne correspondant pas à un motif

    $ 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow