Ich möchte mit dem vi-Editor nach einer Zeichenfolge suchen und die Anzahl der Vorkommen in einer Datei ermitteln.
Ich möchte mit dem vi-Editor nach einer Zeichenfolge suchen und die Anzahl der Vorkommen in einer Datei ermitteln.
Antworten:
:g/xxxx/d
Dadurch werden alle Zeilen mit Muster gelöscht und es wird angegeben, wie viele gelöscht wurden. Rückgängig machen, um sie danach zurückzubekommen.
Der Weg ist
:% s / pattern // gn
Du brauchst die n
Flagge. Um Wörter zu zählen, verwenden Sie:
:%s/\i\+/&/gn
und ein bestimmtes Wort:
:%s/the/&/gn
Siehe count-items
Dokumentationsabschnitt.
Wenn Sie einfach Folgendes eingeben:
%s/pattern/pattern/g
In der Statuszeile wird dann auch die Anzahl der Übereinstimmungen in vi angezeigt.
(ähnlich wie Gustavo sagte, aber zusätzlich :)
Für jede vorherige Suche können Sie einfach Folgendes tun:
:%s///gn
Ein Muster wird nicht benötigt, da es sich bereits im Suchregister befindet (@/
).
"%" - s/
in der gesamten Datei
"g" ausführen - global suchen (mit mehreren Treffern in einer Zeile)
"n" - verhindert jegliches Ersetzen von s/
- nichts wird gelöscht! nichts darf rückgängig gemacht werden!
(siehe: :help s_flag
für weitere Informationen)
(Auf diese Weise funktioniert es perfekt mit " Suche nach visuell ausgewähltem Text ", wie in vim-wikia tip171 beschrieben. )
verwenden
:% s / pattern / \ 0 / g
wenn die Musterzeichenfolge zu lang ist und Sie nicht alles noch einmal eingeben möchten.
Kurze Antwort :
:% s / zu durchsuchender String // gn
Zum Lernen :
Es gibt 3 Modi im VI-Editor wie unten
:
Sie wechseln von Command
zum Command-line
Modus. Was auch immer Sie danach schreiben, :
befindet sich in der CLI (Command Line Interface).%s
Gibt alle Zeilen an. Festlegen des Bereichs als%
Mittel die gesamte Datei ersetzt. Die Syntax für alle Vorkommenssubstitutionen lautet:%s/old-text/new-text/g
g
Gibt alle Vorkommen in der Zeile an. Mit dem g
Flag können Sie die gesamte Zeile ersetzen. Wenn dieses g
Flag nicht verwendet wird, wird nur das erste Vorkommen in der Zeile ersetzt.n
Gibt an, wie viele Vorkommen ausgegeben werden sollen //
Doppelter Schrägstrich bedeutet Auslassen von replacement text
. Weil wir nur finden wollen.Sobald Sie die Anzahl der Vorkommen erhalten haben, können Sie drücken N
Taste drücken, um die Vorkommen anzuzeigen.
Zum Finden und Zählen in einem bestimmten Bereich der Zeilennummern 1 bis 10:
: 1,10s / hallo // gn
%
dass die gesamte Datei durch ,
getrennte Zeilennummern ersetzt wird. Zum Finden und Ersetzen eines bestimmten Bereichs der Zeilennummern 1 bis 10:
: 1,10s / helo / hallo / gn
Ich schlage vor:
*
, um eine "begrenzte Suche" nach dem durchzuführen, was sich unter dem Cursor befindet, oder führen Sie einen Standard durch/pattern
.:%s///gn
diese Option , um die Anzahl der Vorkommen abzurufen. Oder Sie können verwenden :%s///n
, um die Anzahl der Zeilen mit Vorkommen zu ermitteln.** Ich konnte wirklich ein Plug-In finden, das die Meldung "Übereinstimmung N von N 1 mit N 2 " liefert bei jeder Suche die Meldung Zeilen" liefert, aber leider.
Hinweis: Lassen Sie sich nicht durch den schwierigen Wortlaut der Ausgabe verwirren. Der erstere Befehl könnte Ihnen so etwas wie 4 matches on 3 lines
den letzteren geben 3 matches on 3 lines
. Letzteres ist zwar technisch korrekt, aber irreführend und sollte "3 Zeilen stimmen überein" sagen. Wie Sie sehen, besteht also nie die Notwendigkeit, die letztere Form (nur 'n') zu verwenden. Sie erhalten die gleichen Informationen klarer und deutlicher, wenn Sie das 'gn'-Formular verwenden.
:g/xxxx/d
) ist schrecklich, gefährlich und anderen auf dieser Seite unterlegen. Bitte deaktivieren Sie es.