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.