VI-Editor ...Brauche Hilfe

A

andrzey

Grünschnabel
Hi.....

Ich habe folgendes Problem bzw. Aufgabenstellung:

Ich habe eine TextDatei (400Seiten lang), die mit dem vi-Editor bearbeitet werden soll bzw. wird.
Nun soll in der Datei in JEDER Zeile nach dem 5ten Zeichen, ein Blank eingefügt werden....


Wie kriegt man sowas hin? bin ein ziemlicher Newbie auf diesem Gebiet und wäre dankbar für Lösungsvorschläge ;-)

Danke schonmal!
 
# = Kommentar
Code:
ESC
$ # Gehe an den Anfang der Zeile.
ESC:qa  # Aufname deiner Tasten in Register a
→→→→→ # gehe zum 5.Zeichen (cursortaste)
a # Zeichen nach Cursorpos eingeben. Append
 # blank eingeben
ESC
↓$q #Zeile nach unten, $ -> Anfang, q für Aufnahme ende.
1000@a #1000 mal das aufgenommene Makro in Register a ausführen
Und mach's erst mit einer Testdatei.
 
Hi!

Danke erstmal ;-)
Habs hinbekommen.....
Habe es folgendermaßen gelöst:

map q 04la ^[j


@Wolfgang: Könntest du zum Verständnis deine Zeile nochmal kurz erläutern und sagen was die einzelnen Teile jetzt im Genaueren machen? ...Würde mich mal interessieren....

@Johannes: Deine Lösung funktionier leider nicht, da die Aufnahme von Makros nur bei VIM funktioniert.. Ich habe nur einen standard vi-editor auf nem Unix-Server zur Verfügung...
Das Problem was jetzt noch besteht.... ich muss die "q" taste (bei meinem Befehl) immernoch 400mal drücken... und da man ja bekanntlich faul ist, würd ich dieses Makro gerne wiederholen.... ;-)

Jemand ne Idee???



Mfg
 
Zuletzt bearbeitet:
andrzey schrieb:
@Wolfgang: Könntest du zum Verständnis deine Zeile nochmal kurz erläutern und sagen was die einzelnen Teile jetzt im Genaueren machen? ...Würde mich mal interessieren....

Mfg

Ja kann ich. ;)
<ESC> -> bedeutet, dass du die Escape-Taste betätigen sollst ;)
:1,$ -> wende nachfolgenden Befehl auf Zeile 1 bis Dateiende an
s/^\(.....\)\(.*\)/\1 \2/g ->Das ist der Ersetzungsbefehl: (habe noch eine kleine Korrektur eingefügt)

Ersetze fünf Zeichen vom Beginn der Zeile (erster Klammerausdruck mit .....) gefolgt von weiteren Zeichen (zweiter Klammerausdruck .*) durch die erste Referenz \1 -> was im ersten Klammerausdruck steht= ersten 5 Zeichen, einem Leerzeichen und dem Rest ->steht in \2.
Das g besagt, dass es auf die gesamte Zeile angewendet werden soll.
Also habe ich schlicht über Reguläre Ausdrücke ein Leerzeichen nach fünf Zeichen eingefügt. Und das von Zeile 1 bis zum Dateiende.
^\(.....\) fängt fünf Zeichen am Zeilenanfang
\(.*\) fängt den Rest

Das geht extrem flink und spart Tipperei.
Wenn das alles ist, was du mit dieser Datei machen willst, kannst du das auch mit sed machen.

Gruß Wolfgang
 
Jo.... Danke! Das sollte reichen! :-)

Vielen Dank für eure Hilfe

Bye
 

Ähnliche Themen

Samba 3.6.25 - OpenLDAP Setup

Leerzeichen, Großbuchstaben, HTML Tags entfernen mittels SED

Erste Zeile aus Textdatei lässt sich nicht weiterarbeiten

vi-Editor-Befehl

Hilfe bei bash - Shellscript gesucht: zusammengehörende Strings in Konfigdatei

Zurück
Oben