ubuntuusers.de

Dateieinlesen

Status: Gelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

Alecane

Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: Zähle...

Servus,

ich habe eine Datei in der folgendes steht:

username=y1128
password=hdsfe45f

Kann ich per konsole einen Befehl oder Script ausführen, der mit nach Password= alles neu ersetzt?

Gruß Alecane

HeinzBoettjer

Avatar von HeinzBoettjer

Anmeldungsdatum:
23. Februar 2007

Beiträge: 685

Wohnort: Bremen

das geht mit Baustelle/sed

moelledi

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 86

Moin!

Genau, der sed ist das Mittel der Wahl. Ich habe mich sehr schwer getan mit dem sed, deshalb als kleine Starthilfe:

sed -e 's/passwd=.*/passwd=neues_passwort/g' original_datei > neue_datei

Aber Obacht - durch das 'g' am Ende ersetzt der sed dir jeden Eintrag, der auf '*passwd=.*' passt...

Frohes Schaffen!

Alecane

(Themenstarter)
Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

moelledi schrieb:

Moin!

Genau, der sed ist das Mittel der Wahl. Ich habe mich sehr schwer getan mit dem sed, deshalb als kleine Starthilfe:

sed -e 's/passwd=.*/passwd=neues_passwort/g' original_datei > neue_datei

Aber Obacht - durch das 'g' am Ende ersetzt der sed dir jeden Eintrag, der auf '*passwd=.*' passt...

Frohes Schaffen!

Sehr Vielen Dank, ich kannte zwar sed, aber kontne nicht gut damit umgehen 😉

Gruß Kugel

Alecane

(Themenstarter)
Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

Eine frage noch, wenn ich diesen

1
sed -e 's/password=.*/password=neues/g' .testdatei >> .tesdatei

Befehl eingebe wird es so richtig angehängt, aber mit diesen

1
sed -e 's/password=.*/password=neues/g' .testdatei > .tesdatei

wird die datei ganz geelert. nur das >> ist durch ein > getauscht.

EDIT: Erledigt, das liegt an der Logik. Die geöffnette Datei kann nicht gelöscht und geschrieben werden.

HeinzBoettjer

Avatar von HeinzBoettjer

Anmeldungsdatum:
23. Februar 2007

Beiträge: 685

Wohnort: Bremen

einfach ab

>

weglassen dann arbeitet er in der Originaldatei

Alecane

(Themenstarter)
Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

HeinzBoettjer schrieb:

einfach ab

>

weglassen dann arbeitet er in der Originaldatei

Was aber in der Datei selbst nicht gespeichert/geändert wird, nur bei der ausgabe.

Also wenn ich danach ein cat auf meien datei mache ist diese wie unverändert.

HeinzBoettjer

Avatar von HeinzBoettjer

Anmeldungsdatum:
23. Februar 2007

Beiträge: 685

Wohnort: Bremen

Sorry das habe ich nicht verstanden.

Ich habe mal ein Beispiel mit dem ich bei der Umstellung von einer sqlite-Datenbank nach mysql gearbeitet habe:

sed -i "s/VARCHAR(1024/VARCHAR(996/g" collection.sql;

Das war eine 300 MB-Datei da hatte ich kein Platz für eine Ausgabedatei.

Alecane

(Themenstarter)
Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

Also, ich erstelle die datei test in der passwor=password drinn steht.

nun führe ich folgenden Befehl aus:

1
2
3
4
5
6
root@ubuntu:/# cat test
password=password
root@ubuntu:/# sed -e 's/password.*/password=neues/g' test
password=neues
root@ubuntu:/# cat test
password=password

beim ausführen des Befehls hat es geklappt, aber in meien datei wurde dies nicht geschrieben.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Das war eine 300 MB-Datei da hatte ich kein Platz für eine Ausgabedatei.

Dann hätte es auch nicht mit "-i" gehen sollen. "-i" ändert die Datei nicht wirklich "inplace" sondern erstellt eine neue Datei "unter der Haube".

beim ausführen des Befehls hat es geklappt, aber in meien datei wurde dies nicht geschrieben.

Du musst die Option "-i" nutzen damit die änderungen in der Datei gemacht werden.

HeinzBoettjer

Avatar von HeinzBoettjer

Anmeldungsdatum:
23. Februar 2007

Beiträge: 685

Wohnort: Bremen

Ersetzte mal das -e durch -i.

Laut

sed --help

steht das für --in-place[=Suffix]

ändert die Eingabedatei (Backup wird erzeugt, falls Suffix angegeben wurde)

Alecane

(Themenstarter)
Avatar von Alecane

Anmeldungsdatum:
31. März 2009

Beiträge: 213

Sid Burn schrieb:

Das war eine 300 MB-Datei da hatte ich kein Platz für eine Ausgabedatei.

Dann hätte es auch nicht mit "-i" gehen sollen. "-i" ändert die Datei nicht wirklich "inplace" sondern erstellt eine neue Datei "unter der Haube".

beim ausführen des Befehls hat es geklappt, aber in meien datei wurde dies nicht geschrieben.

Du musst die Option "-i" nutzen damit die änderungen in der Datei gemacht werden.

Sehr Cool, das ist ja noch Besser und ich habe in meinem Script schon so viel kopiert und umbenannt, 😀

Danke Sehr, Funktioniert einwandfrei

HeinzBoettjer

Avatar von HeinzBoettjer

Anmeldungsdatum:
23. Februar 2007

Beiträge: 685

Wohnort: Bremen

Sid Burn schrieb:

Das war eine 300 MB-Datei da hatte ich kein Platz für eine Ausgabedatei.

Dann hätte es auch nicht mit "-i" gehen sollen. "-i" ändert die Datei nicht wirklich "inplace" sondern erstellt eine neue Datei "unter der Haube".

Vielleicht hat er die Temporäre Datei ja da gespeichert wo Platz war.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

HeinzBoettjer schrieb:

Vielleicht hat er die Temporäre Datei ja da gespeichert wo Platz war.

Es wird eine Temp Datei im gleichen Verzeichniss erzeugt. Diese woanders zu erzeugen wäre eher Nachteilig. Und "irgendwo" suchen macht kein programm, der einzige andere ort wäre "/tmp".

HeinzBoettjer

Avatar von HeinzBoettjer

Anmeldungsdatum:
23. Februar 2007

Beiträge: 685

Wohnort: Bremen

Wir werden OT.

/home ist bei mir eine andere Partition als /tmp und die Datei war auf dem Desktop.

Egal, es hat damals funktioniert und es funktioniert bei Threadersteller.

Antworten |