[bash] String suchen und neue Zeile darunter

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

[bash] String suchen und neue Zeile darunter

Beitrag von MoonKid » 04.01.2013 12:13:35

Ich muss meine bib-files (biblatex, XeTeX) automatisiert nachbearbeiten.

Ich muss an den Anfang jedes Eintrags eine Zeile hinzufügen.
Bsp.:

Code: Alles auswählen

@article{cabana_2008,
        title = {Selective Provision of Asthma Self-Management Tools to Families},
soll dann so werden

Code: Alles auswählen

@article{cabana_2008,
        hyphenation= {german}, 
        title = {Selective Provision of Asthma Self-Management Tools to Families},
Der einzufügende String ist immer der gleiche. Sowas soll mit sed und awk gehen. Aber so richtig schlau werde ich nicht daraus. Gibt es vielleicht noch was anderes (leichteres!) um sowas zu scripten?

Benutzeravatar
shoening
Beiträge: 916
Registriert: 28.01.2005 21:05:59
Lizenz eigener Beiträge: MIT Lizenz

Re: [bash] String suchen und neue Zeile darunter

Beitrag von shoening » 04.01.2013 12:42:52

Hi,

mit sed:

Code: Alles auswählen

sed -e 's/@article\(.*\)$/@article\1\n\thyphenation= {german},/' bib-datei
Ciao
Stefan
Bürokratie kann man nur durch ihre Anwendung bekämpfen.

MoonKid
Beiträge: 513
Registriert: 12.03.2012 22:36:43

Re: [bash] String suchen und neue Zeile darunter

Beitrag von MoonKid » 04.01.2013 14:08:43

Um das mal zu übersetzen.

Mal abgesehen vom Dateinamen ganz hinten, ist alles hinter

Code: Alles auswählen

sed -e
ein Such-Ersetzungs-Kommando, so wie ich es auch aus vim kenne?

[codes]/@article\(.*\)[/code]
sucht nach Strings/Zeilen, die mit "@article" beginnen und eben mit irgendwas "(.*\)" enden?

Code: Alles auswählen

$/@article\1\n\thyphenation= {german},/
Hier ist mir nicht klar, was das "\1\n\t" soll? Vermutlich hat es damit zu tun, dass der String am Ende der @article-Zeile erhalten bleibt?

Benutzeravatar
4A4B
Beiträge: 977
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: [bash] String suchen und neue Zeile darunter

Beitrag von 4A4B » 04.01.2013 14:22:28

Das $ gehört noch zum Pattern, dadurch enthält "\(.*\)" alles bis zum Ende der Zeile

\1 greift als Backreference "\(.*\)" wieder auf, \n ist ein Zeilenumbruch und \t ein Tab

Antworten