vertical tuberias teclado simbolo sacar pipes parado palito hace ejemplos cómo como barra linux unix grep

linux - tuberias - simbolo pipe en el teclado



¿Cómo grep para el símbolo de dólar($)? (5)

¿Qué tal ^.*[$]{3}.*$

% cat temp $$$ hello1 $$ hello2 hello3 ## hello4 hello5 $$$ % cat temp | grep "$$$" Illegal variable name. % cat temp | grep "/$/$/$" Variable name must contain alphanumeric characters. %

Quiero grep para $$$ y espero que el resultado sea

% cat temp | grep <what should go here?> $$$ hello1 hello5 $$$ %

Para diferenciar, he marcado el mensaje como % .

  • ¿Cuál es el problema aquí?
  • ¿Cuál debería ser la cuerda grep ?

Cuando usas comillas dobles " o ninguno usa el doble /: "///$///$///$"

cat t | grep ///$///$///$

si usa entre comillas simples ''puede usar:

cat t | grep ''/$/$/$''


El problema es que el shell expande los nombres de las variables dentro de las cadenas entre comillas dobles. Entonces, para "$$$" , intenta leer un nombre de variable que comienza con los primeros $ .

En comillas simples, por otro lado, las variables no se expanden. Por lo tanto, ''$$$'' funcionaría, si no fuera por el hecho de que $ es un carácter especial en expresiones regulares que denotan el final de línea. Entonces necesita ser escapado: ''/$/$/$'' .


Funciona para mi:

user@host:~$ cat temp | grep ''/$/$/$'' $$$ hello1 hello5 $$$ user@host:~$


$ grep ''/$/$/$'' temp $$$ hello1 hello5 $$$

Hay un ''gato'' superfluo en tu comando.