it-swarm.com.de

grep für Sonderzeichen in Unix

Ich habe eine Protokolldatei (application.log), die möglicherweise die folgende Zeichenfolge aus normalen 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?

78
Avinash Sonee

Weisen Sie grep an, Ihre Eingabe mit der Option -F Als festen String zu behandeln.

grep -F '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log

Option -n Ist erforderlich, um die Zeilennummer zu erhalten.

grep -Fn '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
142

Die, die für mich gearbeitet hat, ist:

grep -e '->'

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/

75
Tom Brito

Eine verwandte Notiz

Grep für Wagenrücklauf, nämlich die \r Zeichen oder 0x0d, Wir können das schaffen:

grep -F $'\r' application.log

Alternativ können Sie aus Gründen der POSIX-Kompatibilität printf oder echo verwenden

grep -F "$(printf '\r')" application.log

Und wir können hexdump oder less verwenden, um das Ergebnis zu sehen :

$ printf "a\rb" | grep -F $'\r' | hexdump -c
0000000   a  \r   b  \n

In Bezug auf die Verwendung von $'\r' und andere unterstützte Zeichen, siehe Bash Manual> ANSI-C Quoting :

Wörter der Form $ 'string' werden speziell behandelt. Das Word wird zu Zeichenfolge erweitert, wobei Zeichen mit umgekehrten Schrägstrichen ersetzt werden, wie durch den ANSI C-Standard angegeben

6
ryenus
grep -n "\*\^\%\Q\&\$\&\^\@\$\&\!\^\@\$\&\^\&\^\&\^\&" test.log
1:*^%Q&$&^@$&!^@$&^&^&^&
8:*^%Q&$&^@$&!^@$&^&^&^&
14:*^%Q&$&^@$&!^@$&^&^&^&
3
Mani

Sie können versuchen, alphanumerische Zeichen und Leerzeichen zu entfernen. Und dann benutze -n gibt Ihnen die Zeilennummer. Versuchen Sie Folgendes:

grep -vn "^[a-zA-Z0-9 ]*$" application.log

2
R. Kumar