regex - occurrences - ¿Cómo puedo eliminar todas las líneas que no comienzan con ciertos caracteres?
vim replace in selection (7)
Necesito encontrar una expresión regular para eliminar todas las líneas que no comiencen con "+" o "-".
Quiero imprimir una copia en papel de un archivo diff grande, pero muestra 5 o más líneas antes y después de la diferencia real.
En VIM:
:g!/^[+-]/d
Aquí está la traducción al inglés:
¡Haga algo globalmente a todas las líneas que NO lo hacen !
concuerde con la expresión regular: comienzo de la línea ^
seguido de +
o -
, y ese algo que hacer es seleccionar esas líneas.
Si necesita hacer algo más complejo en términos de expresiones regulares, debe usar este sitio: http://txt2re.com/
también proporciona ejemplos de código para muchos idiomas diferentes.
sed -e ''/ ^ [^ + -] / d''
diff -u <some args here> | grep ''^[+-]''
O simplemente no puedes producir las líneas adicionales en absoluto:
diff --unified=0 <some args>
%!grep -Ev ''^[+-]''
se alinea en el archivo actual y puede ser considerablemente más rápido que :v
para archivos grandes.
Probado en Vim 7.4, Ubuntu 14.04, archivo de registro de línea 1M.
Líneas que no contienen palabra: https://superuser.com/questions/265085/vim-delete-all-lines-that-do-not-contain-a-certain-word/1187212#1187212
cat your_diff_file | sed ''/^[+-]/!D''
egrep "^[+-]" difffile >outputfile
En lugar de eliminar todo lo que no coincide, muestra solo las líneas que coinciden. :)