![So durchsuchen Sie eine Textdatei nach einer bestimmten Ganzzahl](https://rvso.com/image/89165/So%20durchsuchen%20Sie%20eine%20Textdatei%20nach%20einer%20bestimmten%20Ganzzahl.png)
Gibt es eine einfache Möglichkeit, eine Textdatei (Quellcode) nach allen Instanzen einer bestimmten Ganzzahl zu durchsuchen? Dies sollte bei größeren Zahlen, die zufällig die Ganzzahl als Teilzeichenfolge enthalten, nicht ausgelöst werden, kann solche Zeilen jedoch nicht einfach ausschließen, da sie beide Fälle enthalten könnten:
Suche nach „6“ …
int a=6; // found
int b=16; // not found (despite the '6' in '16')
int c=6, d=16; // found
Ich suche wirklich nach einem Befehlszeilenansatz dafür, bin aber auch neugierig, ob es einenFOSSEin GUI-artiger Editor, der dies erledigt.
Antwort1
grep -E '\b6\b'
\b
ist eine „Wortgrenze“
Bearbeiten: Nachdem ich @nobar in die richtige Richtung gelenkt hatte, fand/wies er auf die Verknüpfungsoption -w
(Wort-Regulärer Ausdruck) in der Manpage hin, die das Obige wie folgt vereinfacht:
grep -w 6
Bei häufiger Verwendung können Sie eine Funktion ähnlich wie
wgrp(){ grep -w "$1" "$2"; }
Hinweis (an @glenn-jackman): Wenn Sie hier nicht zitieren "$2"
, können Sie die Funktion als Pipeline-Filter verwenden. Aber ja, dann funktioniert es nicht mit Dateinamen mit Leerzeichen.
Nachdem ich eine weitere großartige Antwort von @Gilles gelesen habe, schlage ich nun vor
igrp(){ grep -E "(^|[^0-9])$1($|[^0-9])" "$2"; }
Antwort2
Sie können mit einem regulären Ausdruck nach einer bestimmten Ganzzahl suchen. Suchen Sie nach den Ziffern, denen entweder der Anfang der Daten oder ein anderes Zeichen als eine Ziffer vorangestellt ist, und ebenso nach den Ziffern.
grep -e '^6$' -e '^6[^0-9]' -e '[^0-9]6$' -e '[^0-9]6[^0-9]' # BRE syntax
grep -E '(^|[^0-9])6($|[^0-9])' # ERE syntax
Bei einer Ganzwortsuche, wie in anderen Antworten vorgeschlagen, werden Treffer wie übersehen foo6bar
. (Das ist für Ihren Anwendungsfall vielleicht kein Problem, aber Sie haben danach gefragt.)
Jeder halbwegs seriöse Texteditor oder Viewer (z. B. less
) verfügt über eine Suche mit regulären Ausdrücken. Lesen Sie in der Dokumentation nach, welche Regex-Syntax verwendet wird.