Eu tenho um arquivo de log (application.log) que pode conter a seguinte sequência de caracteres normais e especiais em várias linhas:
*^%Q&$*&^@$&*!^@$*&^&^*&^&
Desejo pesquisar o (s) número (s) de linha que contém essa seqüência de caracteres especial.
grep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
O comando acima não retorna nenhum resultado.
Qual seria a sintaxe correta para obter os números das linhas?
unix
search
grep
special-characters
Avinash Sonee
fonte
fonte
^@
: significa^
seguido por um@
caractere nulo?Respostas:
Diga
grep
para tratar sua entrada como string fixa usando a-F
opção.A opção
-n
é necessária para obter o número da linha,fonte
^
,$
,.
,*
e\
. ou você pode tentarfgrep
também.fgrep
é o mesmo quegrep -F
.egrep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
?grep -rinF '-static'
impressõesInvalid option «t»
. A resposta do @ Mani funcionou , ou sejagrep -rin "\-static"
.O que funcionou para mim é:
O -e significa que o próximo argumento é o padrão e não será interpretado como um argumento.
De: http://www.linuxquestions.org/questions/programming-9/how-to-grep-for-string-769460/
fonte
-
, consulte também stackoverflow.com/questions/2427913/…Uma nota relacionada
Para grep para retorno de carro, ou seja, o
\r
caractere, ou0x0d
, podemos fazer isso:Como alternativa, use
printf
, ouecho
, para compatibilidade POSIXE podemos usar
hexdump
, ouless
para ver o resultado:Com relação ao uso de
$'\r'
e outros caracteres suportados, consulte Bash Manual> ANSI-C Quoting :fonte
fonte
Você pode tentar remover qualquer caractere alfanumérico e espaço. Em seguida, use
-n
fornecerá o número da linha. Tente seguir:grep -vn "^[a-zA-Z0-9 ]*$" application.log
fonte
Tente vi com a opção -b, isso mostrará caracteres especiais de fim de linha (eu normalmente o uso para ver terminações de linha do Windows em um arquivo txt em um sistema operacional unix)
Mas se você quiser uma solução com script obviamente o vi não funcionará, então você pode tentar as opções -f ou -e com grep e canalizar o resultado para sed ou awk. Da página de manual do grep:
Seleção do Matcher -E, --extended-regexp Interpretar PATTERN como uma expressão regular estendida (ERE, veja abaixo). (-E é especificado por POSIX.)
fonte