VIM Blockverarbeitung

Tummelplatz für Computernutzer im allgemeinen und ihrer vielfältigen Probleme

Moderator: (M) Mod.-Team Allgemein

Antworten
vturus
TalkING. Freak
TalkING. Freak
Beiträge: 217
Registriert: So, 17. Feb. 08, 17:29

VIM Blockverarbeitung

Beitrag von vturus » Sa, 04. Feb. 12, 16:23

Hallo, vielleicht kann mir jemand bei foglendem Problem helfen. Ich möchte mit (vorzugsweise) vim in einem Text jeweils 4 Zeilen einer Spalte automatisch durch anderen Eintrag uas jeweils dem ersten Eintrag der ersten in den 4 Splaten und sonst leere Zeichen ersetzen.

Klarer: es geht um latex tabellen

ich habe

xxxx & bla ...
xxxx & bla2...
xxxx & bla3...
xxxx & bla4...
yyyy & bla5...
yyyy & bla6..
yyyy & bla7...
yyyy & bla8 ...

usw.

und möchte bekommen

\multirow{4}{*}{xxxx} bla...
& bla2 usw.

und dann wieder

\multirow{4}{*}{yyyy} bla5 ...
& bla6 usw.

Natürlich kann man auch ein kleines Programmchen schreiben, aber ich möchte es mit Onboardmitteln schaffen. Geht das mit vim oder ev. etwas anderem?

Danke!

malte441
TalkING. Newbie
TalkING. Newbie
Beiträge: 8
Registriert: Do, 01. Dez. 11, 21:56

Beitrag von malte441 » Sa, 04. Feb. 12, 17:38

Klar könntest du dir einen RegEx zusammenschustern, der das kann... Aber ich vermute, dass ein kleines Stück Programmcode schneller geschrieben ist, wenn man nicht gerade ein absoluter RegEx-Pro ist...

vturus
TalkING. Freak
TalkING. Freak
Beiträge: 217
Registriert: So, 17. Feb. 08, 17:29

Beitrag von vturus » Sa, 04. Feb. 12, 22:29

awk '{if ($1 != current && !/end/ && !/begin/) {current = $1; $1="\multicolumn{4}{*}{"$1"}"; line = $0; print line;} else {if (/begin/ || /end/) {line = $0; print} else {$1=""; line = $0; print line;}}}' dat.tex


AWK ist geiles tool

Antworten