Wie kann ich die zweite Zeile der grep-Ausgabe als Eingabeparameter für vim erhalten?

0
$ grep -l -R "myEditor_Init" *
Public/Js/eWebEditor/dialog/ewebeditor.htm
Public/Js/eWebEditor/ewebeditor.htm
Public/Js/eWebEditor/js/ewebeditor.js

Zum Beispiel möchte ich die dritte Datei mit einem Befehl abrufen und übertragen. Wie kann ich das tun?

Vielen Dank.

Jichao
quelle
Was macht die dritte Datei interessanter als die beiden anderen?
Ignacio Vazquez-Abrams
weil es die Funktion 'myEditor_init' ist, die ich bearbeiten möchte.
Jichao
Nichts in Ihrem grep-Befehl weist darauf hin.
Ignacio Vazquez-Abrams

Antworten:

3

Wie Ignacio impliziert, können Sie Ihren grep-Befehl überarbeiten, um zu erhalten nur die eine Datei, die Sie möchten, zum Beispiel:

$ grep -l -R --include="*.js" "myEditor_Init" *
Public/Js/eWebEditor/js/ewebeditor.js

In einem solchen Fall können Sie es bearbeiten, z. (Verwenden Sie Backticks, um das Ergebnis als Argument für vim bereitzustellen:

$ vim `grep -l -R --include="*.js" "myEditor_Init" *`

Wenn Sie wirklich * verwenden möchten, anstatt sich auf * .js-Dateien zu beschränken, können Sie dennoch Folgendes tun:

$ vim `grep -l -R "myEditor_Init" * | tail -1`

Ich finde mich oft (mit csh oder bash) dabei, etwas wie das Folgende zu tun:

$ grep -l -R --include="*.js" "myEditor_Init" *
Public/Js/eWebEditor/js/ewebeditor.js
$ vim `!!`

woher !! wiederholt den vorherigen Befehl und die Backticks geben das Ergebnis dieses Befehls als Argument an vim weiter.

Lars Rohrbach
quelle
Bearbeiten Sie einfach die oben vorgeschlagenen Befehle, um eine Rekursion in allen lokalen Unterverzeichnissen zu ermöglichen.
Lars Rohrbach