ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
4056
4056
EMPFEHLEN
-
Hallo,
ein ständig wiederkehrender Arbeitsablauf ist es, zunächst in Dateien nach einem String zu suchen. Und dann die gefundenen Dateien mit dem vi zu öffnen und zu bearbeiten. Der zweite Schritt geht erst, indem ich die Dateinamen-Treffer mit copy&paste in die vi-Aufrufzeile übernehme.
Wie kann ich das automatisieren (SunOS 5.9)? Also in einem Befehl/Kurzskript sagen: "Öffne mir die Dateien mit dem vi, die den String xyz enthalten."
Dank und Gruss
Marcus
-
Hallo,
im vim:
Code :1
:help grep
Konkretes Beispiel:
1.) vim oeffnen
2.)3.)Code :1
:grep main *.c
um in der Trefferliste zurueck bzw vorzuspringenCode :1
:cnext bzw :cprev
btw cnext und cprev kannst du auch auf eine Taste mappen...
Gruß
RedWing"I'm not deaf, I'm ignoring you"
----
-
Danke. Nur ist leider unser VI noch nicht iMproved. Wer weiss noch was?
-
Hallo,
1.) wieso installierst du vim nicht einfach?
2.) geht das denn im "uralten" vi nicht auch?
3.) Falls du 1. und 2. negativ beantworten solltest waere das noch ein unbefriedigender Workaround:
Code :1
vi `grep main *.c | sed -e 's/\(.*\):.*/\1/g'`
Gruß
RedWIng"I'm not deaf, I'm ignoring you"
----
-
Ich bin hier nur einer von vielen Anwendern auf der Maschine. Installieren kann ich nicht und darf ich nicht. Leider. Und im vi klappt's nicht, ich hab's getestet. Meldung: "grep: Not an editor command"
Zitat von RedWing
Ach, so unbefriedigend ist das für mich nicht, klappt doch. Ich versuche dann noch, das mit Variable für den String in einen alias zu packen (scheitert noch am Anführungszeichen).
Zitat von RedWing
Aber einen Optimierungswunsch hätte ich noch: Kann man so eine Art "distinct" einbauen? So dass also eine Datei nur einmal geöffnet wird, auch wenn die gesuchte Zeichenkette mehrmals vorkommt?
Vielen Dank schon mal,
Marcus
PS: Ja, stimmt, meine Skript-Kenntnisse tendieren gegen Null.
-
27.04.06 14:03 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Du kannst dem grep die Option -l übergeben, da werden die Dateien nur aufgelistet sobald der gesuchte reg. Ausdruck darin vorkommt. /edit: Dann kannst du auch den sed Aufruf weglassen.
Was verwendest du denn für eine Shell? In der Bash kann man keine Parameter an einen Alias übergeben. Da müßtest du schon eine Funktion schreiben.
GrußGeändert von deepthroat (27.04.06 um 14:06 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Nur so als Anmerkung:
Hast du denn kein Homeverzeichniss. Du koenntest den vim einfach zu dir ins HomeverzeichnissIch bin hier nur einer von vielen Anwendern auf der Maschine. Installieren kann ich nicht und darf ich nicht. Leider.
installieren und dann einen alias setzen.
Wenn du grep mit dem vi benutzen willst, ist das builtin grep vom vim 10mal komfortabler...
Gruß
RedWing"I'm not deaf, I'm ignoring you"
----
-
Hallo,
Fantastisch! Das ist es, was ich gesucht habe. Ich fasse noch mal zusammen:
Zitat von deepthroat
Winziger Nachteil nur: Wenn es gar keinen grep-Treffer gibt, kommt keine plausible Meldung mehr, sondern es rauscht kurz grep: can't open -R durch. Das ist mir jetzt aber Wurst.Code :1
vi `grep -l <GesuchterString> * -R`
------------------------
Zur neuen alias-Problematik:
Ich bin in der csh, bzw. ich erweitere als erste Tat jeder Session auf tcsh. Da wir schon dabei sind: Geht das dann? Wie?
Zitat von deepthroat
-
27.04.06 15:48 #9
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Ja, das dachte ich mir schon das da die (t)csh eingesetzt wird. Ich finde ja die csh ist das schlimmste was es gibt (zum Benutzen und vor allem Programmieren) - und die tcsh ist nicht viel besser. Ich hab mir deswegen eine cshrc gebastelt die mich automatisch in eine Bash einloggt. So, das mußte mal raus

In der (t)csh gibt es keine Funktionen, aber man kann die History Substitution in den Alias benutzen:Das kannst du dann so benutzen:Code :1
alias vigrep 'vi `grep -l \!*`'
Ein weiterer Nachteil ist, das es nicht für Dateien mit Sonderzeichen im Namen funktioniert.Code :1
$ vigrep '[foo][bar]*' *.c *.h *.cc
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Vielen Dank, alles gut. Und metasyntaktische Variablen habe ich auch noch kennen gelernt...
Gruss
Marcus
Ähnliche Themen
-
sed unter SunOS
Von yson im Forum Linux & UnixAntworten: 3Letzter Beitrag: 06.04.09, 16:50 -
sed bzw grep problemchen
Von ma-pi im Forum Linux & UnixAntworten: 2Letzter Beitrag: 03.03.08, 11:05 -
Grep
Von downset04 im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 17.10.06, 13:18 -
SunOS vs. Linux
Von AngstHab im Forum Hosting & WebserverAntworten: 2Letzter Beitrag: 29.05.06, 13:12 -
find und grep mit php
Von buzzom im Forum PHPAntworten: 8Letzter Beitrag: 25.08.05, 21:09





Zitieren
Login





