Tengo un archivo de registro (application.log) que puede contener la siguiente cadena de caracteres normales y especiales en varias líneas:
*^%Q&$*&^@$&*!^@$*&^&^*&^&
Quiero buscar el (los) número (s) de línea que contiene esta cadena de caracteres especiales.
grep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
El comando anterior no devuelve ningún resultado.
¿Cuál sería la sintaxis correcta para obtener los números de línea?
unix
search
grep
special-characters
Avinash Sonee
fuente
fuente
^@
: significa^
seguido de@
o carácter nulo?Respuestas:
Dile
grep
que trate tu entrada como una cadena fija usando la-F
opción.grep -F '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
-n
Se requiere la opción para obtener el número de línea,grep -Fn '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
fuente
^
,$
,.
,*
y\
. o puedes intentarlofgrep
también.fgrep
es lo mismo quegrep -F
.egrep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
?grep -rinF '-static'
impresionesInvalid option «t»
. La respuesta de @ Mani funcionó , es decirgrep -rin "\-static"
.El que funcionó para mí es:
grep -e '->'
La -e significa que el siguiente argumento es el patrón y no se interpretará como un argumento.
De: http://www.linuxquestions.org/questions/programming-9/how-to-grep-for-string-769460/
fuente
-
, consulte también stackoverflow.com/questions/2427913/…Una nota relacionada
Para grep para el retorno de carro, es decir, el
\r
carácter, o0x0d
, podemos hacer esto:Alternativamente, use
printf
, oecho
, para compatibilidad POSIXY podemos usar
hexdump
, oless
para ver el resultado:Con respecto al uso de
$'\r'
y otros caracteres compatibles, consulte el Manual de Bash> Citas ANSI-C :fuente
grep -n "\*\^\%\Q\&\$\&\^\@\$\&\!\^\@\$\&\^\&\^\&\^\&" test.log 1:*^%Q&$&^@$&!^@$&^&^&^& 8:*^%Q&$&^@$&!^@$&^&^&^& 14:*^%Q&$&^@$&!^@$&^&^&^&
fuente
Puede intentar eliminar los caracteres alfanuméricos y los espacios. Y luego use
-n
le dará el número de línea. Intente seguir:grep -vn "^[a-zA-Z0-9 ]*$" application.log
fuente
Pruebe vi con la opción -b, esto mostrará caracteres especiales de final de línea (normalmente lo uso para ver los finales de línea de Windows en un archivo txt en un sistema operativo Unix)
Pero si desea una solución con script, obviamente vi no funcionará, así que puede probar las opciones -f o -e con grep y canalizar el resultado a sed o awk. Desde la página de manual de grep:
Matcher Selection -E, --extended-regexp Interpreta PATTERN como una expresión regular extendida (ERE, ver más abajo). (-E lo especifica POSIX).
fuente