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.