# Batch Datei um .txt-Datei zu bearbeiten



## MrJakie (10. Juli 2003)

Hallo, ich brauch mal eure Hilfe!


Ich kenne mich leider in dem Metier überhaupt nicht aus, habe aber folgendes Problem:


Ich möchte eine Textdatei (log-file) mit 10.000 Zeilen bearbeiten

Alle zeilen, die das wort disabled enthalten sollen gelöscht werden, bzw. alle Zeilen, die das Wort enabled enthalten sollen erhalten bleiben.


Ich könnte mir vorstellen, daß das sehr einfach zu realisieren sein wird, aber leider habe ich selber vom coden NULL Ahnung.

Also es muß ja nicht unbedingt ne batch datei sein......hauptsache ich krieg das irgendwie hin! 

Evtl gibts ja schon ein Proggie was das kann?!? Eigentlich isses ja nicht viel anders als Strg+h im Wordpad.... 


Danke für jederart Hinweis oder Hilfe! 


MfG  MrJakie


----------



## Frankdfe (18. Juli 2003)

Hallo,

das folgende Perl-Skript sollte dein Problem lösen.


```
open(FILE1, "<datei_vorher.txt");
my $inhalt;
while(<FILE1>)
{
  if (/enabled/)
  {
    $inhalt = $inhalt.$_
  }
}

close(FILE1);

open(FILE2, ">datei_nachher.txt");
print FILE2 $inhalt;
close(FILE2);
```

Gruß Frank


----------



## MrJakie (18. Juli 2003)

Hey, vielen Dank dafür!

hab das Problem allerdings inzwischen schon anders hinbekommen!

Aber nichts desto trotz vielen Dank für Deine Mühen!!!


MfG  MrJakie


----------



## Terry (7. November 2003)

das Script  prima @ Frankdfe

könntest du es mir soweit erweitern das auch noch gleich eine 2. Datei durchsucht wird und das Ergebniss aus beiden Dateien in einer steht?


----------



## Frankdfe (10. November 2003)

Hallo Terry!

Mit etwas Perl-Kenntnissen könntest du das auch selbst hinbekommen.


```
open(FILE1A, "<datei_vorher1.txt");
my $inhalt;
while(<FILE1A> )
{
  if (/enabled/)
  {
    $inhalt = $inhalt.$_
  }
}
close(FILE1A);

open(FILE1B, "<datei_vorher2.txt");
while(<FILE1B> )
{
  if (/enabled/)
  {
    $inhalt = $inhalt.$_
  }
}
close(FILE1B);

open(FILE2, ">datei_nachher.txt");
print FILE2 $inhalt;
close(FILE2);
```

Gruß Frank


----------



## Terry (11. November 2003)

Dank dir erstmal für deine "Mühe"

Klar, wenn ich etwas Plan von hätte würde ich das auch hinbekommen, nur stecke ich noch in den Kinderschuhen mit Perl und von daher sind solche Lösungen auch Interessant und Nützlich um den Sinn erstmal näher zu verstehen.

Mit kleinen Dingen fängt man an um sich dann zu Steigern.



Terry


----------



## TheDuke (8. Februar 2004)

Hallo erstmal,

es geht noch viel einfacher mit dem find Kommando. (Windows 2000 & XP)

find /v "disabled"  Datei.xyz > NeuDatei.xyz

Die Option v zeigt alle  Zeilen an in denen der Suchbegriff nicht vorkommt.

Und noch etwas kürzer und logischer (finde das nachdem gesucht wird):

find "enabled" Datei.xyz > NeuDatei.xyz


@Terry
find "enabled" ErsteDatei.xyz > NeuDatei.xyz
find "enabled" ZweuteDatei.xyz >> NeuDatei.xyz

(>) in eine Datei umleiten,  (>>)  an eine Datei anhängen oder neu erzeugen

Hinweis:
Durch die Umleitung (>) in Die Datei NeuDatei.xyz wird deren Inhalt, falls sie vorhanden ist, geleert !
Sämtlicher Inhalt wird gelöscht (auf 0 Bytes gekürzt !), auch wenn der Suchbegriff nicht gefunden wurde.
Ansonsten wird die Datei neu angelegt.

Ausserdem sollte man als Zieldatei auf gar keinen Fall die Quelldatei verwenden,
da man sich sonst den Ast auf dem man sitzt wegsägt ;-) 


Bis dann

The Duke


----------

