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.


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.


Bearbeiten Sie einfach die oben vorgeschlagenen Befehle, um eine Rekursion in allen lokalen Unterverzeichnissen zu ermöglichen.
Lars Rohrbach
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.