Wort einfügen am ende jeder Zeile (sed&awk?)

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
s!sko
Beiträge: 61
Registriert: 04.03.2003 11:03:41

Wort einfügen am ende jeder Zeile (sed&awk?)

Beitrag von s!sko » 08.03.2005 13:58:13

Hallo,

habe hier ein Textfile in dem ca. 4000 Zeilen wie die folgende stehen:

Code: Alles auswählen

Steger  Markus      lp4msteger       notset@email.local      de
Nun möchte ich am ende jeder Zeile ein Random generiertes Passwort anfügen, die Passwörter würde ich mit pwgen generieren.
Mein Gedanke war, mit pwgen ein Passwort generieren und die Ausgabe dann an sed übergeben das es dann ans Ende der Zeile schreibt. Leider kenne ich mich mit sed zuwenig aus ob dies überhaupt geht, oder evtl. gibt es auch eine andere (einfachere) Lösung?

Danke für Tipps, Yves

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 08.03.2005 14:43:13

Code: Alles auswählen

exec <oldfile
read zeile
while [ $? -eq 0 ]
do
 PASSWORD=`get_password`
 echo "$zeile $PASSWORD "
 read zeile
done >newfile
Gruß
ernohl

hajoan
Beiträge: 17
Registriert: 22.11.2004 13:37:07

Beitrag von hajoan » 08.03.2005 14:54:51

Eine recht guten Einstieg in den Stream Editor findest Du übrigens hier:
http://www.linux-fuer-alle.de/doc_show. ... 81&catid=8

Um mal mit einer Beispielzeile zu beginnen:
source.txt:
123

Und nun ein:
sed -e 's/$/ Polizei/' source.txt > destination.txt

Schon steht ein:
123 Polizei
in destination.txt
Das Zeichen '$' steht hierbei für das Zeilenende.

Naja eine fertige Lösung ohne sed, sondern durch einlesen der ganzen Zeile hast Du ja schon bekommen *seufz*
Denke wenigstens dran, wenn Du mal etwas das nicht am Anfang oder am Ende ersetzt werden muss.
Wobei ich da wegen der Tabs zu AWK greifen würde *duck*

Der Weg ist das Ziel ;)

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Beitrag von fuzzy » 08.03.2005 15:20:11

Hallo s!sko,
mein Linktipp beantwortet sicher nicht die Frage, geht aber in die Richtung von hajoan :wink:
http://www.linuxfibel.de/kapitel7.htm#cont

Gruss fuzzy

s!sko
Beiträge: 61
Registriert: 04.03.2003 11:03:41

Beitrag von s!sko » 08.03.2005 15:42:02

Danke für eure Hilfe. ernohl's Version funktioniert eigentlich einwandfrei, jedoch habe ich nicht erwähnt das es in dem Textfile auch Einträge gibt bei denen der Nach- Vorname fehlt, was dann im newfile die Tabulatoren rauslöscht und so diese Einträge nicht mehr korrekt sind.

Habe mein Textfile jetzt mal am ende mit einem Platzhalter "passwort" versehen und dann versucht mit ernohl's script das Wort passwort durch das Random Passwort zu ersetzen.
Dabei habe ich einfach die echo Zeile mit dieser ersetzt:

Code: Alles auswählen

awk {sub(/passwort/,"$PASSWORD") ; print} $zeile
Was jedoch nicht so einfach funktioniert. Kann mir jemand weiterhelfen wie ich die awk Zeile korrekt ins Script einbinden muss?

Textfile (Auszug):

Code: Alles auswählen

Steger  Antoinette      lp4asteger      notset@email.local      de      passwort
                        lp4hmuster      notset@email.local      de      passwort

ernohl
Beiträge: 1181
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 09.03.2005 08:45:45

s!sko hat geschrieben:Habe mein Textfile jetzt mal am ende mit einem Platzhalter "passwort" versehen und dann versucht mit ernohl's script das Wort passwort durch das Random Passwort zu ersetzen.
Dabei habe ich einfach die echo Zeile mit dieser ersetzt:

Code: Alles auswählen

awk {sub(/passwort/,"$PASSWORD") ; print} $zeile
Was jedoch nicht so einfach funktioniert.

Code: Alles auswählen

echo $zeile | sed "s/password/$PASSWORD/"
Gruß
ernohl

Antworten