Necesito imprimir líneas en un archivo que coincida con un patrón de O un patrón diferente con o . Siento que esta es una tarea fácil, pero me parece que no puede encontrar una respuesta. Alguna idea?

InformationsquelleAutor rick | 2011-03-22

4 Comentarios

  1. 27

    El POSIX manera

    awk '/pattern1/|| /pattern2/{print}'

    Editar

    Para ser justos, me gusta lhf‘s de la mejor manera a través de /pattern1|pattern2/, ya que requiere de menos escribir por el mismo resultado. Sin embargo, debo señalar que esta plantilla no puede ser utilizado para lógico Y operaciones, para lo que usted necesita para utilizar mi plantilla, que es /pattern1/&& /pattern2/

    • gracias, este gran trabajo. nunca puedo averiguar si la sed o awk es apropiado para una determinada tarea. ¿hay alguna diferencia grande que me estoy perdiendo? o diferentes maneras de hacer la misma cosa?
    • sí que la hay. awk es un lenguaje de programación. la sed no es realmente así en la práctica. (aunque su turing completo).
    • Yo por lo general solo uso sed para un reemplazo de texto simple como en s/foo/bar/g o lo que sea. Para los casos en que desea imprimir sólo una parte de una línea dada, yo, en general, a awk para la mayoría de las aplicaciones aunque sed puede ser obligado a hacerlo con algunos regex magia. Si alguna vez tiene un problema que se ocupa de cualquier sentido de ‘campos’ lo que el delimitador puede ser, que casi siempre quiere ir con awk en ese caso. También, nunca es correcto para canalizar la salida de awk a grep o viceversa. Siempre se puede combinar los dos en el interior de awk.
  2. 22

    Uso:

    sed -nr '/patt1|patt2/p'

    donde patt1 y patt2 son los patrones. Si usted quiere que ellos para que coincida con la línea completa, uso:

    sed -nr '/^(patt1|patt2)$/p'

    Puede quitar el -r y agregar escapa:

    sed -n '/^\(patt1\|patt2\)$/p'

    para la compatibilidad con POSIX.

Dejar respuesta

Please enter your comment!
Please enter your name here