So durchsuchen Sie eine Textdatei nach einer bestimmten Ganzzahl

So durchsuchen Sie eine Textdatei nach einer bestimmten Ganzzahl

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'

\bist 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.

Antwort3

Ich denke, das war kein so obskurer Bedarf. Mein normaler Programmiereditor,Federunterstützt dies über den „Suchen“-Dialog mit der Option „Nur ganzes Wort suchen“. Ich bin sicher, dass viele andere Editoren dies auch haben – obwohl im Moment anscheinend nicht Plumas Vorfahre,gedit.

Bildbeschreibung hier eingeben

verwandte Informationen