[gelöst] Zeile einfügen mit sed

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

[gelöst] Zeile einfügen mit sed

Beitrag von Duff » 18.02.2008 19:28:30

Hallo,

ich möchte mit sed und dem Schalter -i eine Datei öffnen und ans Ende dieser Datei noch eine weitere Zeile einfügen.

Bsp. einer Textdatei (vor der Bearbeitung):

Code: Alles auswählen

duff01@mail.de ....
duff02@mail.de ....
duff03@mail.de ....
duff04@mail.de ....
duff05@mail.de ....
Die Datei sollte dann nachher ungefähr so aussehen:

Code: Alles auswählen

duff01@mail.de ....
duff02@mail.de ....
duff03@mail.de ....
duff04@mail.de ....
duff05@mail.de ....
NeueMailAdresse@mail.de ...
Schön wäre noch, wenn ich z.B. einen duff0[1-5]-Eintrag nehmen könnte und dann alles vor dem @ durch NeueMailAdresse ersetzen könnte und dieses ans Ende der Datei schreiben.
Aber das Einfügen einer neuen Zeile würde mir auch schon reichen ;-)

Gruß,
Daniel
Zuletzt geändert von Duff am 19.02.2008 13:08:49, insgesamt 1-mal geändert.
Oh, yeah!

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Beitrag von detix » 18.02.2008 20:07:01

Tuts denn ein einfaches echo nicht?
echo "NeueMailAdresse@mail.de..." >>Textdatei
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 18.02.2008 20:11:21

detix hat geschrieben:Tuts denn ein einfaches echo nicht?
echo "NeueMailAdresse@mail.de..." >>Textdatei
Würde natürlich auch funktionieren, aber ich würde es gerne über sed realisieren.
Oh, yeah!

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Beitrag von detix » 18.02.2008 20:39:38

so könnts gehen:
sed '$s/$/\nNeueMailAdresse@mail.de.../g' Textdatei
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 18.02.2008 22:28:28

detix hat geschrieben:so könnts gehen:
sed '$s/$/\nNeueMailAdresse@mail.de.../g' Textdatei
auch ne Möglichkeit

geht aber auch mit dem Kommandos 'i', 'a' und 'c'

Code: Alles auswählen

sed '$i\NeueMailAdresse@mail.de ...' Textdatei
Gruß
gms

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 19.02.2008 09:07:00

Sorry, hatte mal wieder ganz vergessen zu erwähnen, dass ich hier sed nicht auf debian sondern auf einem HP-UX 11.11 System anwenden möchte.
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 19.02.2008 10:11:10

Duff hat geschrieben:Sorry, hatte mal wieder ganz vergessen zu erwähnen, dass ich hier sed nicht auf debian sondern auf einem HP-UX 11.11 System anwenden möchte.
du hast auch leider vergessen zu erwähnen, wie sich das deiner Meinung nach hier auswirkt :wink:
Laut der Manpage http://www.docs.hp.com/en/B2355-60127/sed.1.html sind die vorgeschlagenen Kommandos 'a','c','i' und 's', sowie das $ Zeichen für die letzte Inputzeile auch auf der HP-UX verfügbar

Gruß
gms

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 19.02.2008 10:25:54

Nochmals sorry, aber unter debian (etch) funktionieren die Sachen so, wie ihr sie gepostet habt. Unter HP-UX leider nicht.

Bei dem substitude 's/$/\n mail..' datei wird mail an die letzte Zeile angehangen und nicht darunter mit dem \n.
Bei dem sed '$i\mail...' datei bekomme ich immer folgende Fehlermeldung:

Code: Alles auswählen

sed: Function $i\ mail cannot be parsed.
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 19.02.2008 11:08:29

das sind die Gründe, warum ich hauptsächlich Perl verwende, daß funkt überall gleich

so sollte es aber auch auf der HP-UX funktionieren:

Code: Alles auswählen

gms@gmsaix ~ $ sed '$a\
> bla bla
> ' x.txt
1
2
3
bla bla
Gruß
gms

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 19.02.2008 12:06:17

Komisch, so funktioniert es. Danke.

Aber wieso nur so?
Also mit Zeilenumbruch bei der Eingabe?
Oh, yeah!

Antworten