Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

eine Textdatei durchsuchen und Suchergebnisse verändert in eine weitere Textdatei ausgeben

Mitglied: pArAdOxOn

pArAdOxOn (Level 1) - Jetzt verbinden

15.06.2007, aktualisiert 21.06.2007, 6406 Aufrufe, 8 Kommentare

Soh folgendes , ich muss aus einer Datei eine bestimmte Zeichenfolge filtern, und diese abgeändert in eine 2. Datei schreiben. Ich bin schon soweit , das ich ich das mit dem filtern im Griff hab. Wurde von mir so realisiert :

findstr /i /c "\<T11.*" 1.txt > ausgabe.txt
findstr /i /c "\<T=.*" 1.txt >> ausgabe.txt


so weit so gut, nun kommt der schwierige Teil und zwar können die ergebnisse entweder so T="1132001" oder so T1132001 in der zu durchsuchenden Datei enthalten sein . Das ganze muss noch vereinheitlicht werden, das alles eben so aussieht T="1132001" .

k.A. was ich mir überlegt hatte, war das man die suchergebnisse in Variablen zerlegt und dann wieder dementsprechend ausgibt falls dies möglich ist ??
Mitglied: Biber
16.06.2007 um 00:12 Uhr
Moin pArAdOxOn,

willkommen im Forum.

Na, dann solltest Du uns bitte noch verraten,
  • was denn nun noch in den Zeilen der ausgabe.txt steht/stehen kann
  • und was denn nun erhalten bleiben soll in der "endgültigen" Ergebnisdatei

Wenn in der Origanaldatei Zeilen stehen mit
- entweder dem String "T11nnnn"
- oder eventuell dem String "T="11nnn"

Dann erwischt Du alle Zeilen IMHO eher so:
findstr "T11 T=\"11" 1.txt

In der Ausgabedatei kannst Du dann alle Zeilen jeweils in eine Variable kopieren und dann innerhalt dieser Zeile ersetzen.
01.
.... 
02.
For /f "delims=" %%i in (ausgabe.txt) do  call :processLine "%%i" 
03.
goto eof: 
04.
:Processline 
05.
Set "thisline=%~1" 
06.
...(hier fehlt mir die Info, was von den alten zeilen erhalten bleiben soll)
Gruß
Biber
Bitte warten ..
Mitglied: bastla
16.06.2007 um 00:22 Uhr
Hallo pArAdOxOn!

Nach Deinem Beispiel oben müsste es etwa so gehen:
01.
@echo off & setlocal 
02.
del Ergebnis.txt 2>nul 
03.
for /f "delims=" %%i in (ausgabe.txt) do set "Zeile=%%i" & call :ProcessLine 
04.
goto :eof 
05.
:ProcessLine 
06.
echo %Zeile%|findstr "=">>Ergebnis.txt && goto :eof 
07.
echo %Zeile:~0,1%="%Zeile:~1%">>Ergebnis.txt
@Biber
Nach den interessanten Erlebnissen neulich mit ";" und Anführungszeichen beim Übergeben von Texten an Unterprogramme versuche ich es mal mit der Variablenzuweisung gleich in der "for"-Zeile - was hältst Du davon?

Grüße
bastla
Bitte warten ..
Mitglied: pArAdOxOn
16.06.2007 um 00:23 Uhr
ich brauch halt die nummern ausgegeben in dem format hier T="nummer"
Bitte warten ..
Mitglied: Biber
16.06.2007 um 00:35 Uhr
@bastla
Variablenzuweisung gleich in der "for"-Zeile - was hältst Du davon?
Eigentlich halte ich es für schlechter lesbar so.
Aber nach diesem exotischen Fall neulich... hmm...
...könnte ich mir ja versuchen anzugewöhnen.

Schlechter lesbar finde ich es trotzdem, weil diese FOR ...IN DO...-Zeilen bei mir manchmal ohnehin schon so lang sind, dass ich die Feinheiten nach dem DO nicht immer im Auge behalten kann.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
16.06.2007 um 00:50 Uhr
@Biber

... manchmal ohnehin schon so lang sind ...
In der Hinsicht tue ich mir vergleichsweise leicht (vermutlich, weil mit Old-School-Basic "aufgewachsen" und daher ein umstandsloses "goto" / "gosub" gewöhnt) - bei meinen Schleifen gibt's meist nach dem "do" nicht viel mehr als ein "call" ...

Grüße
bastla
Bitte warten ..
Mitglied: pArAdOxOn
21.06.2007 um 01:44 Uhr
öhm das ganze funktioniert schon fast einwandfrei, ich hab blos noch ein kleines problem und zwar wird text der mit in der Zeile steht mit gefiltert, das ganze schaut dann so aus :

T="1132001 Bla Bla"
T="1132002 D1 M6"
T="1132003 "
T="1132004"
T="1132006 Bla "
T="1132008"
T="1132012"
T="1132014"
T="1132015"
T="1132016"
T="1132017"
T="1132018"
T="1132019"
T="1132021"
T="1132022"
T="1132020"

das hier war der gefilterte text :

T1132001 Bla Bla
T1132002 D1 M6
T1132003
T1132004
dsfsdf T1132005
T1132006 Bla
wefrwrf T1132007
T1132008
n5 T="1132009"
n1 T1132010
n2 T1132011
bla bla bla
bla bla bla
T1132012
n4 T1132013
bla bla bla
T1132014
T1132015
bla bla bla
T1132016
T1132017
T1132018
T1132019
T="1132020"
T1132021
T1132022
T1132023

ich hab mich schon dran versucht bin aber nicht weiter gekommen, bin am verzweifeln so sollte es im Optimalfall aussehen :

T="1132001"
T="1132002"
T="1132003 "
T="1132004"
T="1132006"
T="1132008"
T="1132012"
T="1132014"
T="1132015"
T="1132016"
T="1132017"
T="1132018"
T="1132019"
T="1132021"
T="1132022"
T="1132020"

und das sind die batchdateien:
Step1.bat
findstr /x /i /r "\<T11.*" 1.txt >> ausgabe.txt

findstr /x /i /r "\<T=.*" 1.txt >> ausgabe.txt


Step2.bat
@echo off & setlocal
del Ergebnis.txt 2>nul
for /f "delims=" %%i in (ausgabe.txt) do set "Zeile=%%i" & call :ProcessLine
goto :eof
:ProcessLine
echo %Zeile%|findstr "=">>Ergebnis.txt && goto :eof
echo %Zeile:~0,1%="%Zeile:~1%">>Ergebnis.txt

da wird bestimmt noch was zu machen sein
Bitte warten ..
Mitglied: bastla
21.06.2007 um 07:51 Uhr
Hallo pArAdOxOn!

Falls das, was Du "gefilterten" Text nennst, der Inhalt von "Ausgabe.txt" sein sollte, dann ergibt sich ein wesentlicher Unterschied zu Deiner Beschreibung von oben: Die "T"-Werte stehen nicht immer am Anfang - ist das so? Auf keinen Fall dürften aber Zeilen wie "bla bla bla" enthalten sein ...
Um die Inhalte des ersten Beispiels auf zB T="1132001" zu beschränken, müsste es genügen, die folgende Zeile ersatzweise in die Batchdatei zu schreiben:
01.
for /f "delims= " %%i in (ausgabe.txt) do set "Zeile=%%i" & call :ProcessLine
Die Veränderung zur vorigen Version besteht in der Leerstelle nach "delims=".

Grüße
bastla
Bitte warten ..
Mitglied: bastla
21.06.2007 um 10:23 Uhr
... oder versuch es gleich mit dem folgenden VBScript:
01.
'Filtern.vbs 
02.
Const Suffix = "-bearbeitet" 
03.
If WScript.Arguments.Count = 0 Then 
04.
    WScript.Echo "Keine Datei angegeben!" 
05.
    WScript.Quit 
06.
End If 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
EinDatei = WScript.Arguments(0) 
09.
If Not fso.FileExists(EinDatei) Then 
10.
    WScript.Echo "Angegebene Datei '" & EinDatei & "' nicht gefunden!" 
11.
    WScript.Quit 
12.
End If 
13.
AusDatei = Left(EinDatei, InStrRev(EinDatei, ".") - 1) & Suffix & _ 
14.
    Mid(EinDatei, InStrRev(EinDatei, ".")) 
15.
Zeilen = Split(fso.OpenTextFile(EinDatei, 1).ReadAll, vbCrLF) 
16.
Set Aus = fso.OpenTextFile(AusDatei, 2, True) 
17.
For i = 0 To UBound(Zeilen) 
18.
    Teile = Split(Zeilen(i), " ") 
19.
    TWert = "" 
20.
    For j = 0 To UBound(Teile) 
21.
        If Left(Teile(j), 1) = "T" Then 
22.
            TWert = Teile(j) 
23.
            Exit For 
24.
        End If 
25.
    Next 
26.
    If Left(TWert, 3) = "T=""" Then 
27.
	If Right(TWert, 1) = """" Then  
28.
            Aus.WriteLine TWert 
29.
        Else 
30.
            Aus.WriteLine TWert & """" 
31.
        End If 
32.
    ElseIf Left(TWert, 2) = "T=" Then 
33.
        Aus.WriteLine "T=""" & Mid(TWert, 3) & """" 
34.
    ElseIf Left(TWert, 1) = "T" Then 
35.
        Aus.WriteLine "T=""" & Mid(TWert, 2) & """" 
36.
    End If 
37.
Next 
38.
Aus.Close
Du kannst entweder die zu filternde Datei per Drag And Drop auf die Script-Datei ziehen, oder, wenn das Script zB in "C:\Scripts\Filtern.vbs" gespeichert wurde, dieses von der Kommandozeile oder aus einem Batch wie folgt starten:
01.
cscript //nologo "C:\Scripts\Filtern.vbs" "D:\Ausgangsdatei.txt"
Als Ergebnis erhältst Du eine "D:\Ausgangsdatei-bearbeitet.txt". Der Zusatz "-bearbeitet" wird in der 2. Zeile des Scripts festgelegt und kann natürlich auch geändert werden.

Arbeitsweise: Das Script sucht in jeder Zeile der übergebenen Datei nach dem ersten "T" und übernimmt dieses und alle weiteren Zeichen bis zum nächsten Leerzeichen oder bis zum Ende der Zeile (was eben früher kommt). Danach wird dieser "TWert" (wie gewünscht formatiert) in die Ausgabedatei geschrieben.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
PHP
Textdatei durchsuchen mit php
gelöst Frage von ANTiNATORPHP2 Kommentare

Ich habe eine Textdatei deren Inhalt etwa so aussieht: Powerpointvortrag Worddatei Nochewas Worddatei usw. nun möchte ich mit einem ...

VB for Applications

Jede Zeile einer Textdatei bis zum Trennzeichen durchsuchen

gelöst Frage von karolsonVB for Applications6 Kommentare

Hallo an alle, Ich möchte mit VBA eine 50MB große Textdatei nach einer Zeichenkette durchsuchen und einige Begriffe aus ...

Batch & Shell

PowerShell Array in Textdatei ausgeben

gelöst Frage von derhoeppiBatch & Shell2 Kommentare

Hallo, der Titel hört sich nicht allzu schwer an. Ich habe eine Foreach Schleife die Durchläuft und ein Array ...

PHP

Mit php eine Textdatei durchsuchen

gelöst Frage von ANTiNATORPHP5 Kommentare

Langsam wird es mir Peinlich dies ist meine 3te frage innerhalb von 2 Tagen:/ Diese script sucht nach Ordnern ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...