Necesito averiguar una expresión regular para eliminar todas las líneas que no comienzan con «+» o «-«.

Quiero imprimir una copia en papel de un gran archivo de diferencias, pero muestra de 5 líneas antes y después de los diff.

  • ¿Por qué no puede regenerar el diff y decirle que reducir el número de líneas de contexto?
  • Por lo que acabo de sugerir, el comando es diff -c 0 -u 0
InformationsquelleAutor mager | 2009-11-12

7 Comentarios

  1. 56

    En VIM:

    :g!/^[+-]/d

    Aquí es la traducción al inglés:

    globally hacer algo para todas las líneas que NO! coincide con la expresión regular: inicio de la línea^ seguida de + o -, y que algo que hacer es delete esas líneas.

    • Genial, gracias! Esta es una buena solución.
    • si desea guardar una pulsación de tecla: ‘:v’ es sinónimo de ‘:g!’ 🙂
    • Que guarda dos pulsaciones de teclas! Cambio, 1. Aseado.
    • funciona a la perfección!
    • Aunque la respuesta está en el lugar, la pregunta original no era vim específicos. Como referencia, se puede, sin embargo, hacen exactamente lo mismo con sed (sed -e 'g!/^[+-]/d').
  2. 0

    diff -u <some args here> | grep '^[+-]'

    O simplemente podría no producir las líneas adicionales en todo:

    diff --unified=0 <some args>

  3. 0
    cat your_diff_file | sed '/^[+-]/!D'
    • inútil el uso de cat: sed acepta nombres de archivo como argumentos
    • De acuerdo para este caso particular. Yo normalmente uso gato cuando se utiliza una larga cadena de sed comandos de forma incremental filtrar los datos. Si tengo demasiado grande de un archivo de datos para empezar, puedo reemplazar el gato con la cabeza -100 y el resto de estancias de la misma.
  4. 0
    egrep "^[+-]" difffile >outputfile

    Lugar de eliminar todo lo que no coincide con mostrar sólo las líneas que coincidan. 🙂

    • Definitivamente, usted necesita otro símbolo de intercalación y no necesitan la «e» o cotizaciones. Esto funciona para mí: grep ^[^+-]
  5. 0

    Si necesitas hacer algo más complejo en términos de expresiones regulares, usted debe utilizar este sitio:
    http://txt2re.com/

    también proporciona ejemplos de código para muchos idiomas diferentes.

    • Gracias!! Esto es impresionante!!

Dejar respuesta

Please enter your comment!
Please enter your name here