• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Dateiinhalte mittels Script ersetzen

Hallo Linuxer,
ich habe da mal eine Frage.

Situation:
Ich habe auf meinem Linuxrechner mehrere User eingerichtet.
UserA, UserB, UserC.

In allen Homeverzeichnissen der User, liegt jeweils eine Datei mit Namen „test123.txt“.
Der Inhalt lautet z.B. „abc“


Ergebnis:
Kennt Ihr eine Lösung wie ich ein einfaches Script gestalten kann, welches den Inhalt der „test123.txt“ aller User variabel ändert?

So soll bei Ausführung des Scriptes bei UserA -123- bei UserB -test- und bei UserC -erfolgreich- als Ergebnis nach Ausführung des Scriptes stehen.

Schon mal Danke im Vorraus

Lösung:
Script, aber wie!

Gruß
Marathoni83
 
Ich denke 'sed' wäre das was du suchst.

Beispiel:
Code:
# sed -i -e 's/abc/xyz/' DATEINAME

EDIT:
um das nochmal zu konkretisieren -
var="dein text den du user bezogen ändern musst"
# sed -i -e ''s/abc/$var/'' DATEINAME
Du musst bloss beachten, dass wenn du sed mit einer Variable benutzt, 2x ' (Hochkommatas) zu benutzen.
 
ich glaube, dass die Aufgabenstelklung nochmal konkretisiert werden sollte.
sed ist nicht notwendig, man kann doch auch einfach mit echo den Text in der Datei ändern.
Ich habe es so verstanden, dass das Problem darin liegt, wie man es schafft, userbezogen zu entscheiden, WELCHER Text rein soll. Deshalb meine ANfrage dahingehend, wer das Script ausführen soll.

Olaf
 
vielleicht so ... ???
Code:
# Scriptanweisungen ...
echo "123" > /home/userA/test123.txt
echo "test" > /home/userB/test123.txt
echo "erfolgreich" > /home/userC/test123.txt
Ich weiß nicht, was du willst.
Vielleicht postest du mal dein Script ...

Olaf
 
Das hat mir schon weitergeholfen.
Wenn ich den Befehl in der Konsole einfüge, wird dieser bereits ausgeführt.
Welche Datei Endung muss eine Datei haben, damit ich mit nur einem Befehl
diese Datei ausführen kann. Dieses ist deshalb der Fall, weil es eine Reihe von
Anweisungen geben wird.

Gruß
Marathoni
 
Eine Datei wird - entgegen Windows - nicht durch die Endung ausführbar, sondern man muss sie ausführbar machen.
Siehe hierzu das Kommando chmod
Code:
man chmod

Olaf
 
Oh Gott! Ist das unpräzise.

Zum Finden der Dateien über die Shell:

man find

Zum Ändern der Dateien:

Tja, das ist nicht einfach. Das hängt vom Inhalt der Dateien ab, und was da geändert werden soll. Für relativ unstrukturierte Dateien nimmt man am besten sed. Sind die Dateien in 'Tabellenform' eignet sich meist awk besser. Um das ganze drumherum strickt man dann einen Rahmen in der Bash-Skriptsprache (das ist die Sprache der Kommandozeile/Shell).

Will man aber nicht zig Tools lernen müssen, lernt man besser perl oder python. Da ist dann quasi alles 'einheitlich', und die Dokumentation muss man sich dann meistens auch nicht an verschiedenen Stellen zusammensuchen.

Da Du aber, wie es aussieht, schon Probleme mit den Grundlagen der Shell hast, schau Dir das an:

http://www.galileocomputing.de/openbook/unix_guru/

Wenn Du des Englischen mächtig sein solltest als kompakte Einführung in die Bash:

http://tldp.org/LDP/abs/html/
 
Wizzzard schrieb:
Oh Gott! Ist das unpräzise.
Ich weiß, man kann hier nur noch mit der Glaskugel agieren.
Ich schlage vor, wenn wir vom Eigentümer dieses Threads nicht bald erfahren, worum es hier eigentlich geht, diesen Thread zu schließen.

Olaf
 
smiley_emoticons_peka_closed.gif
 
Oben