| 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: 16809
 
 
 |  | 
        
          | 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)
 |  
          |  |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
  
    |  |