Ich habe eine Protokolldatei (application.log), die möglicherweise die folgende Zeichenfolge aus Normal- und Sonderzeichen in mehreren Zeilen enthält:
*^%Q&$*&^@$&*!^@$*&^&^*&^&
Ich möchte nach den Zeilennummern suchen, die diese Sonderzeichenfolge enthalten.
grep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
Der obige Befehl gibt keine Ergebnisse zurück.
Was wäre die richtige Syntax, um die Zeilennummern zu erhalten?
unix
search
grep
special-characters
Avinash Sonee
quelle
quelle
^@
: bedeutet^
gefolgt von@
oder nul Zeichen?Antworten:
Sagen Sie
grep
, dass Sie Ihre Eingabe mit der-F
Option als feste Zeichenfolge behandeln sollen .Option
-n
ist erforderlich, um die Zeilennummer zu erhalten,quelle
^
,$
,.
,*
und\
. oder du kannst es auch versuchenfgrep
.fgrep
ist das gleiche wiegrep -F
.egrep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
?grep -rinF '-static'
drucktInvalid option «t»
. Die Antwort von @ Mani hat funktioniert , dhgrep -rin "\-static"
.Das, was für mich funktioniert hat, ist:
Das -e bedeutet, dass das nächste Argument das Muster ist und nicht als Argument interpretiert wird.
Von: http://www.linuxquestions.org/questions/programming-9/how-to-grep-for-string-769460/
quelle
-
finden Sie auch unter stackoverflow.com/questions/2427913/…Ein verwandter Hinweis
Um nach Wagenrücklauf zu suchen, nämlich nach dem
\r
Charakter, oder0x0d
können wir dies tun:Alternativ können Sie
printf
oderecho
aus Gründen der POSIX-Kompatibilität verwendenUnd wir verwenden können
hexdump
, oder sehen das Ergebnis:less
Informationen zur Verwendung von
$'\r'
und anderen unterstützten Zeichen finden Sie im Bash-Handbuch> ANSI-C-Anführungszeichen :quelle
quelle
Sie können versuchen, alphanumerische Zeichen und Leerzeichen zu entfernen. Und dann erhalten Sie mit use
-n
die Zeilennummer. Versuchen Sie Folgendes:grep -vn "^[a-zA-Z0-9 ]*$" application.log
quelle
Versuchen Sie vi mit der Option -b. Dies zeigt spezielle Zeichen am Zeilenende an (ich verwende es normalerweise, um Windows-Zeilenenden in einer txt-Datei unter einem Unix-Betriebssystem anzuzeigen).
Aber wenn Sie eine Skriptlösung wollen, die offensichtlich nicht funktioniert, können Sie die Optionen -f oder -e mit grep ausprobieren und das Ergebnis in sed oder awk weiterleiten. Von der Grep-Manpage:
Matcher-Auswahl -E, --extended-regexp Interpretieren Sie PATTERN als erweiterten regulären Ausdruck (ERE, siehe unten). (-E wird von POSIX angegeben.)
quelle