Autor |
Nachricht |
|
|
Titel: datei ändern vie script [edit]
Verfasst am: 04.09.2006, 15:59 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
Hallo liebe KANOTIX Gemeinde,
Ich habe nun meinen neuen Job angefangen und muss zu meiner begeisterung feststellen das viele Server auf Linux laufen.
Mein PC leider noch nicht... -.- vermutlich auch nie.
Aber ich bräucht mal eure hilfe. Ich habe schon hie rund da gestöbert, aber ich steig da nicht ganz durch.
Ich brauch ein Shell Script das eine Datei nach einem bestimmten String durchsucht und diesen String dann durch einen anderen ersetzt. in meinem Fall ist es eine IP-Adresse auf dem DNS-Server, alles von Hand zu machen ist schwer und mir fehlt da irgendwie der Plan.
Ich habe mit dem sed rum hantiert, aber mit den variablen habe ich es auch nicht so.
Code:
#!/bin/sh
echo "neue IP" >> datei2
tail +2 datei1 >> datei1
mv datei2 datei1
das habe ich mal zusammengeschustert, bringt nur nix.
Weiss einer von euch ein einfaches schnelles und leicht zu verstehendes Script???
Vielen Dank schon mal im vorraus. |
Zuletzt bearbeitet von Cool J. am 05.09.2006, 16:30 Uhr, insgesamt 2 Male bearbeitet
|
|
|
|
 |
|
Titel: RE: datei ändern vie script
Verfasst am: 04.09.2006, 16:00 Uhr
|
|
Anmeldung: 17. Dez 2003
Beiträge: 16792
|
|
perl -pi.backup s/alte_ip/neue_ip/g datei |
|
|
|
|
 |
|
Titel: RE: datei ändern vie script
Verfasst am: 04.09.2006, 16:12 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
Danke Kano,
aber ich versteh das nicht.  |
|
|
|
|
 |
|
Titel:
Verfasst am: 04.09.2006, 16:47 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
habs
Code:
#!/bin/sh
sed -i -e 's!alte_ip!neue_ip!' datei
danke Kano du warst der ausschlagebende punkt.  |
|
|
|
|
 |
|
Titel:
Verfasst am: 05.09.2006, 16:37 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
so jetzt habe ich doch noch eine frage, und merkt euch, ich bin kein programmierer.
ich muss einen ganzen stapel an dateien in einem ordner ändern.
mein kleines script von oben reicht da völlig, weil der string immer der gleiche ist in den dateien.
jetzt ist es aber so das ich vorher ein backup fahren will und dann noch alle dateien durchsuchen will.
die befehle dafür sind mir klar, aber es gibt da doch beim ausführen ein kleines problem.
ich habe in meinem script die befehle alle hintereinander geschrieben, und wenn ich es ausführe klappt das
script auch, aber zb das backup ist dann nicht von den alten dateien sondern von den neuen.
muss ich die befehle in schleifen packen damit er sie alle nach einander ausführt.
und wenn ja wie???
wenn nein wie dann??? |
|
|
|
|
 |
|
Titel:
Verfasst am: 05.09.2006, 18:10 Uhr
|
|

Anmeldung: 18. Mar 2004
Beiträge: 3417
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 06:11 Uhr
|
|
Anmeldung: 12. Mar 2005
Beiträge: 368
|
|
Meinst du etwas in dieser Art:
Nimm lieber Perl, wie es Kano vorgeschlagen hat.
perl -pi.bak -e 's/alte_ip/neue_ip/g' *.txt; mv *.bak Backup
Ersetzt z.B. in allen '*.txt' -Dateien eines Ordners 'alte_ip' durch 'neue_ip'
und macht Sicherungskopien aller bearbeiteten Dateien nach '*.txt.bak',
anschl. werden die original -Dateien in den Unterordner 'Backup' verschoben. |
_________________ Gruss an alle Kanotix-Fans, blauweiss
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 09:25 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
severin hat folgendes geschrieben::
poste doch mal das Skript, bitte
Tut mir leid, habe das Script nicht mehr, nach zu vielen fehlversuchen habe ich es gelöscht.
blauweiss hat folgendes geschrieben::
perl -pi.bak -e 's/alte_ip/neue_ip/g' *.txt; mv *.bak Backup
danke schön das funktioniert einwandfrei. habe sogar noch ein bissel darum herum gebastelt.
aber kanst du mir erklären was es mit dem perl überhaupt auf sich hat, ich finde im netz nichts hilfreiches. soll eine programmiersprache sein.
und noch was, jetzt nachdem ich das script fertig hatte muss ich zwei strings in einer datei ändern. (z. B. ip_alt1 und ip_alt2 in ip_neu1 und ip_neu2) kann man das in deinem befehl rein verschachteln?
für eine gute seite die mir das perl auf deutsch auch erklärt bin ich auch schon dankbar.
vielen dank euch allen schon mal für die hilfe. |
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 10:06 Uhr
|
|

Anmeldung: 17. Dez 2003
Beiträge: 700
Wohnort: Berlin
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 12:56 Uhr
|
|
Anmeldung: 12. Mar 2005
Beiträge: 368
|
|
@Cool J.
Schreibs einfach hintereinander:
perl -pi.bak -e 's/ip_alt1/ip_neu1/g; s/ip_alt2/ip_neu2/g' *.txt; mv *.bak Backup |
_________________ Gruss an alle Kanotix-Fans, blauweiss
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 13:33 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
das habe ich sogar blos falsch.
so habe ich es gemacht: perl -pi.bak -e 's/ip_alt1/ip_neu1/g' 's/ip_alt2/ip_neu2/g' *.txt; mv *.bak Backup
danke dir für den tip. |
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 13:49 Uhr
|
|
Anmeldung: 12. Mar 2005
Beiträge: 368
|
|
Cool J. hat folgendes geschrieben::
...viele Server auf Linux laufen.
Mein PC leider noch nicht... -.- vermutlich auch nie.
Da du wohl eingefleischter Windows-User bist, würde mich mal interessieren,
wie eine solche Aufgabe da zu lösen ist,
oder dürfen wir dich, früher oder später doch in der Linuxwelt begrüssen? |
_________________ Gruss an alle Kanotix-Fans, blauweiss
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 15:09 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
naja ich habe nen testserver den ich per putty verbinde.
dort habe ich dummy dateien um das ganze zu testen, später schiebe ich das script einfach auf den echtserver und führe es aus.
ich habe schon angedeutet das ich wieder linux haben will. mich wiedert das richtige arbeiten mit windows irgenwie an. alleine die tasks zu verwalten und den überblick zu behalten macht mich irre.
und wenn ich linux wenigstens auf ner virtual machine laufen lassen dürfte, dann wär mir schon geholfen, würde das windows nur für mail und die warenwirtschaftssoftware benutzen... |
|
|
|
|
 |
|
Titel:
Verfasst am: 06.09.2006, 16:33 Uhr
|
|

Anmeldung: 17. Dez 2003
Beiträge: 700
Wohnort: Berlin
|
|
Du kannst Dir z.B. cygwin installieren, da sind die meisten Unix-Tools dabei. Es gibt - wenn ich mich recht erinnere - sogar einen Satz Unix-Tools von MS. Auch Perl und Python gibt's für Win (ActiveState).
Ciao Martin |
_________________ omnia vincit pecunia
|
|
|
|
 |
|
Titel:
Verfasst am: 07.09.2006, 11:01 Uhr
|
|

Anmeldung: 13. Jul 2005
Beiträge: 73
|
|
Ich muss mein Script erweitern... -.-
ich will das mir die anzahl der geänderten dateien angezeigt wird.
ich dachte da an grep oder find...
ich weiss aber irgendwie nicht wie ich das ohne probleme einbinden soll
ein tip der mich weiter bringt und nicht alles verrät wär super.
EDIT:
ich denke ich habs, hab mal nen admin gefragt,
Code:
grep suchwort *.txt | wc
|
|
|
|
|
 |
|
Titel:
Verfasst am: 07.09.2006, 16:21 Uhr
|
|
Anmeldung: 04. Feb 2004
Beiträge: 92
|
|
wenn du wirklich nur die anzahl der geänderten dateien willst dann wäre
grep -l suchwort *.txt | wc -l
besser geeignet
einfach mal das manual zu grep durchlesen, dann siehst du schon was du brauchst
genau genommen gibst du in deinem skript jetzt die anzahl der geänderten zeilen aus (können auch mehrere pro datei sein) |
|
|
|
|
 |
|