Buscar..


Introducción

Los comandos sed se pueden especificar para actuar solo en ciertas líneas usando direcciones o rangos de direcciones .

Linea especifica

$ cat ip.txt
address
range
substitution
pattern
sample
  • Línea n th

    $ sed -n '2p' ip.txt 
    range
    
    $ sed '3d' ip.txt 
    address
    range
    pattern
    sample
    
  • Última línea

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

Gama específica de líneas

$ cat ip.txt 
address
range
substitution
pattern
sample
  • El rango especificado incluye esos números de línea

    $ sed -n '2,4p' ip.txt 
    range
    substitution
    pattern
    
  • $ se puede utilizar para especificar la última línea. Se puede utilizar el espacio entre la dirección y el comando para mayor claridad.

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

GNU sed
  • i th line to i + j th line

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

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

Líneas que coinciden con el patrón de expresión regular

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Líneas que coinciden con un patrón

    $ 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
    
  • Gama de patrones

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

Nota

  • En el segundo ejemplo, combinó dos rangos: líneas 1,2 y líneas 4,5
  • Consulte Uso de diferentes delimitadores sobre cómo usar otros caracteres en lugar de / para especificar el patrón.

GNU sed
  • Partido insensible a mayúsculas

    $ 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
    

Especificando rango usando tanto números como patrones

$ cat ip.txt 
address
range
substitution
pattern
sample
Add Sub Mul Div
  • Número de línea para alinear el patrón

    $ sed -n '2,/pat/p' ip.txt 
    range
    substitution
    pattern
    
  • Patrón de coincidencia de línea a número de línea

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

GNU sed
  • Patrón de coincidencia de líneas más el número de líneas que lo siguen

    $ sed -n '/add/I,+1p' ip.txt 
    address
    range
    Add Sub Mul Div
    
  • Se puede usar 0 como número de línea de inicio para señalar el final del rango cuando el patrón coincide con la primera línea de entrada

    $ 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
    

Rango de direcciones negativas

$ cat ip.txt 
address
range
substitution
1234
search pattern
sample
Add Sub Mul Div
  • Borrado de líneas distintas a la dirección especificada

    $ 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
    
  • Buscar y reemplazar en líneas que no coinciden con un patrón

    $ 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow