grep solaris

Solaris-grep con funcionalidad OR



(6)

Quiero grep 2 patrones en un archivo en Solaris UNIX .

Ese es el nombre de archivo grep ''pattern1 OR pattern2''.

El siguiente comando NO funciona:

grep ''pattern1/|pattern2'' filename

¿Qué está mal con este comando?

NOTA: estoy en Solaris


¿En qué sistema operativo estás

Funcionará en sistemas con GNU grep, pero en BSD, Solaris, etc., /| no es apoyado.

Pruebe egrep o grep -E , por ej.

egrep ''pattern1|pattern2''


Ese comando funciona bien para mí. Agregue información adicional, como su plataforma, la expresión regular exacta y el contenido del archivo que está utilizando (minimizado al ejemplo más pequeño que aún reproduce el problema). (Añadiría un comentario a su publicación, pero no tengo suficiente reputación).


Eso debería ser correcto. Asegúrese de agregar o no los espacios adecuados, es decir, "patrón1 / | patrón2" frente a "patrón1 / | patrón2".

¿Estás seguro de que no solo tienes problemas con los casos o algo así? prueba el modificador -i.


Eso depende completamente de qué patrón1 y patrón2 son. Si solo son palabras, debería funcionar, de lo contrario necesitarás:

grep ''/(pattern1/)/|/(pattern2/)''


Si desea la funcionalidad POSIX (es decir, comportamiento similar a Linux), puede colocar los binarios POSIX 2-compatibles al comienzo de su ruta:

$ echo $PATH /usr/xpg4/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:[...]

También hay / usr / xpg6 compatible con POSIX 1.

/usr/bin: SVID/XPG3 /usr/xpg4/bin: POSIX.2/POSIX.2a/SUS/SUSv2/XPG4 /usr/xpg6/bin: POSIX.1-2001/SUSv3


Un método arcano que usa fgrep (es decir, cadenas fijas) que funciona en Solaris 10 ...

Proporcione una lista de patrones, con cada patrón separado por una NEWLINE, pero citado para que el intérprete de comandos lo interprete como una palabra:

fgrep ''pattern1 pattern2'' filename

Este método también funciona para grep , fgrep y egrep en /usr/xpg4/bin , aunque el ERE delimitado por tuberías en cualquier egrep es a veces el menos molesto.

Puede insertar nuevas líneas arbitrarias en una cadena si su shell permite editar el historial, por ejemplo: en el problema bash Cv Cj en el modo emacs o en el modo vi-command.