2010-01-28 8 views
28

caso ¿Cómo responden a un caso de expresiones regulares insensibles y eliminarlo al mismo tiempousando sed para eliminar un insensible línea encajada

leí que para obtener casos partidos insensibles, usar la bandera "i"

sed -e "/pattern/replace/i" filepath 

y eliminar el uso d

sed -e "/pattern/d" filepath 

también he leído que podría combinar varios indicadores como 2iw

me gustaría saber si sed podría combinar ambos iy d He intentado lo siguiente, pero no funcionó

sed -e "/pattern/replace/id" filepath > newfilepath 

Respuesta

41

Para el uso de mayúsculas y minúsculas/I en lugar de/i.

sed -e "/pattern/Id" filepath 
+0

Ah! ¡funciona! Se siente tan tonto, lol Gracias! – eruina

+3

Precaución: eso no es portátil. Vea este comentario: http://stackoverflow.com/questions/4412945/case-insensitive-search-replace-with-sed#comment31685516_4412964 –

1

puede usar (g) awk también.

# print case insensitive 
awk 'BEGIN{IGNORECASE=1}/pattern/{print}' file 

# replace with case insensitive 
awk 'BEGIN{IGNORECASE=1}/pattern/{gsub(/pattern/,"replacement")}1' file 

o simplemente con el shell (bash)

#!/bin/bash 
shopt -s nocasematch 
while read -r line 
do 
    case "$line" in 
     *pattern*) echo $line; 
    esac 
done <"file" 
+0

Lo único es ... mantiene las líneas para ser eliminadas. Entonces: 'awk 'BEGIN {IGNORECASE = 1}!/Pattern/{print}' file' –

Cuestiones relacionadas