Jedes zweite Vorkommen eines Zeichens ersetzen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
warzenpower
Beiträge: 109
Registriert: 01.04.2005 18:35:10

Jedes zweite Vorkommen eines Zeichens ersetzen

Beitrag von warzenpower » 19.12.2007 14:08:21

Hallo,


hat jemand die syntax zur hand, um - per sed, awk oder was immer - folgendes zu ersetzen:

in der datei /etc/ppp/chap-secrets muss ich das erste Asteriskzeichen gegen die zeichenfolge pptpd ersetzen, das zweite soll bestehen bleiben:

aus

Code: Alles auswählen

name         *       passwort        * # kommentar
soll

Code: Alles auswählen

name         pptpd       passwort        * # kommentar
werden.

Code: Alles auswählen

sed -e 's/\*/pptpd/g'
geht nicht, weil dann logischerweise beide *felder ersetzt werden.

ich kann die felder mit cat und cut auslesen und dann das zeichen ersetzen, aber wie würde ich die dateien mergen? zeile für zeile?


oder geht es einfacher mit sed oder awk?

die datei besteht aus über 500 zeilen, manuell wäre doch ein wenig zeitraubend ...

vielen dank im voraus!


gruss



warzenpower

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 19.12.2007 14:37:13

So ?

Code: Alles auswählen

$ cat /tmp/test.txt
name         *       passwort        * # kommentar 
name2        *       passwort2           * # rgrgrgrg
$ sed -e 's/\*/pptpd/' /tmp/test.txt
name         pptpd       passwort        * # kommentar 
name2        pptpd       passwort2           * # rgrgrgrg



Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 19.12.2007 14:39:30

Das "g" am Ende des Regex sagt "global", normalerweise arbeiten solche regex nur bis zum ersten match.
Perl macht Spass.

warzenpower
Beiträge: 109
Registriert: 01.04.2005 18:35:10

DANKE!!

Beitrag von warzenpower » 20.12.2007 07:20:52

moin,


und vielen dank - manchmal hat man einfach sand im auge - äh, oder war das das brett??


klar, der erste match in jeder zeile zählt ja, und nicht nur einmal pro datei - peinlich ...


und ich hatte schon angefangen, mir etwas mit awk und paste zu basteln .... hüstel ;-)


so haut es jetzt hin.



vielen, vielen dank!!


gruss



warzenpower

Antworten