25.10.2014, 18:50 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
Cool J.
14 Titel: datei ändern vie script [edit]  BeitragVerfasst 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. Verlegen

Code:
#!/bin/sh

echo "neue IP" >> datei2
tail +2 datei1 >> datei1
mv datei2 datei1


das habe ich mal zusammengeschustert, bringt nur nix. Traurig

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
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
Kano
Titel: RE: datei ändern vie script  BeitragVerfasst am: 04.09.2006, 16:00 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16275

perl -pi.backup s/alte_ip/neue_ip/g datei
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Cool J.
Titel: RE: datei ändern vie script  BeitragVerfasst am: 04.09.2006, 16:12 Uhr



Anmeldung: 13. Jul 2005
Beiträge: 73

Danke Kano,

aber ich versteh das nicht. Verlegen
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
Cool J.
Titel:   BeitragVerfasst am: 04.09.2006, 16:47 Uhr



Anmeldung: 13. Jul 2005
Beiträge: 73

habs Smilie

Code:
#!/bin/sh

sed -i -e 's!alte_ip!neue_ip!' datei


danke Kano du warst der ausschlagebende punkt. Winken
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
Cool J.
Titel:   BeitragVerfasst 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???
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
severin
Titel:   BeitragVerfasst am: 05.09.2006, 18:10 Uhr



Anmeldung: 18. Mar 2004
Beiträge: 3417

Frage
poste doch mal das Skript, bitte

_________________
Kein Wort verstanden? Auf http://kanotix.com/index.php?module=pnW ... uerDummies
gibt's ein Glossar.

No clue what I'm talking about? New to Linux? Check http://kanotix.com/index.php?module=pnW ... ForDummies for a glossary.
 
 Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen ICQ-Nummer 
Antworten mit Zitat Nach oben
blauweiss
Titel:   BeitragVerfasst am: 06.09.2006, 06:11 Uhr



Anmeldung: 12. Mar 2005
Beiträge: 366

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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Cool J.
Titel:   BeitragVerfasst am: 06.09.2006, 09:25 Uhr



Anmeldung: 13. Jul 2005
Beiträge: 73

severin hat folgendes geschrieben::
Frage
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. Smilie

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. Smilie

vielen dank euch allen schon mal für die hilfe.
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
horo
Titel:   BeitragVerfasst am: 06.09.2006, 10:06 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 700
Wohnort: Berlin
Zitat:
...ich finde im netz nichts hilfreiches...

Dann hast Du nicht gesucht!
Fang mal dort an und hangel Dich weiter:
http://de.wikipedia.org/wiki/Perl

Ciao Martin

P.S.: Wenn Du Programmieranfänger bist (oder es werden willst Winken ), solltest Du Dir lieber Python anschauen:
http://de.wikipedia.org/wiki/Python_%28 ... sprache%29

just my 0.02¤

_________________
omnia vincit pecunia
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
blauweiss
Titel:   BeitragVerfasst am: 06.09.2006, 12:56 Uhr



Anmeldung: 12. Mar 2005
Beiträge: 366

@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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Cool J.
Titel:   BeitragVerfasst am: 06.09.2006, 13:33 Uhr



Anmeldung: 13. Jul 2005
Beiträge: 73

das habe ich sogar blos falsch. Smilie

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.
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
blauweiss
Titel:   BeitragVerfasst am: 06.09.2006, 13:49 Uhr



Anmeldung: 12. Mar 2005
Beiträge: 366

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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Cool J.
Titel:   BeitragVerfasst 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. Smilie

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. Böse

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...
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
horo
Titel:   BeitragVerfasst 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
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Cool J.
Titel:   BeitragVerfasst 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. Smilie

EDIT:

ich denke ich habs, hab mal nen admin gefragt,
Code:
grep suchwort *.txt | wc
 
 Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer 
Antworten mit Zitat Nach oben
Andreas
Titel:   BeitragVerfasst 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)
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.