Suchen Sie nach einem Wort in TXT-Dateien und schreiben Sie einige Zeilen in die neue TXT-Datei
Bitte helfen Sie mir, ein Skript zu erstellen, um die unten beschriebenen Aufgaben auszuführen. Ich habe 2 Dateien. A.txt und B.txt Inhalt von A.txt wie folgt
ITEM name TICKY title nice coffe drink type DRINK ITEM name APPLE title sweet tasty apple type FRUIT ITEM name JUICE title nice tasty drink type DRINK ITEM name ORANG title niice nice orange type FRUIT ITEM name CHERY title nutritious rich fruit type FRUIT
jetzt muss ich in A.txt nach dem Wort "FRUIT" suchen und die 2. Zeile über der "FRUIT" in eine neue Datei kopieren
list.txt. ABER ich brauche nur den Namen der Frucht, wo die list.txt wie folgt aussehen sollte.
APPLE ORANG CHERY
Dies ist meine Kodierung (Powel Shel), um dies zu tun ...
$source = "C:\temp\A.txt" $destination = "C:\temp\list.txt" $hits = select-string -Path $source -SimpleMatch "type FRUIT" -CaseSensitive $filecontents = get-content $source foreach($hit in $hits) { $filecontents[$hit.linenumber-3]| out-file -append $destination "" |out-file -append $destination }
Dadurch wird die zweite obere Zeile wie unten beschrieben extrahiert
name APPLE name ORANG name CHERY
Und unter Codierung (.bat) wird das Wort "Name" entfernt.
@echo off setlocal enabledelayedexpansion del list2.txt for /f "tokens=*" %%a in (C:\temp\list.txt) do ( set line=%%a set chars=!line:~-13,13! echo !chars! >> list2.txt )
Als 2. Phase muss ich nun in der list.txt-Datei (APPLE, ORANG, CHERY .....) in meinem B.txt nach Wörtern suchen. B.txt wird sein
sieht wie unten aus.
ITEM p_date 10/03/15 pt_time 11:29:40:00 title nice coffe drink name TICKY stock yes end ITEM p_date 10/03/15 pt_time 11:29:40:00 title sweet tasty apple name APPLE stock yes end ITEM p_date 10/03/15 pt_time 11:29:40:00 title nice tasty drink name JUICE stock yes end ITEM p_date 10/03/15 pt_time 11:29:40:00 title niice nice orange name ORANG stock yes end ITEM p_date 10/03/15 pt_time 11:29:40:00 title nutritious rich fruit name CHERY stock yes end
Und jetzt muss ich nach den Welten von list.txt in B.txt suchen und die 3 oberste Zeile extrahieren und entsprechend in eine neue Datei schreiben
benannt done.txt ............ unten ist meine Kodierung (powershel).
$source = "C:\temp\B.txt" $destination = "C:\temp\done.txt" $patterns = Get-Content c:\temp\list2.txt | Where-Object{$_} $results = Select-String c:\temp\done.txt -Pattern $patterns -SimpleMatch $results.Line | ForEach-Object{"$_`r`n"} | Set-Content c:\temp\done.txt foreach($hit in $hits) { $filecontents[$hit.linenumber-4]| out-file -append $destination $filecontents[$hit.linenumber-3]| out-file -append $destination $filecontents[$hit.linenumber-2]| out-file -append $destination $filecontents[$hit.linenumber-1]| out-file -append $destination "" |out-file -append $destination }
Es ist mir gelungen, dafür Coding zu entwickeln. aber ich brauche 3 script-datei (2 powershel und 1 batch), um diese operation abzuschließen. Freundlich
Hilf mir, diese Aufgabe in einem einzigen Skript auszuführen. Es wird am besten sein, wenn es in .vbs oder .bat ist. Bitte hilf mir, danke.
0 Antworten auf die Frage
Verwandte Probleme
-
3
Wie kann ich eine Verzeichnisstruktur "invertieren"?
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
7
Starten Sie den Synergy-Client beim Booten in Mac OS X
-
4
Wie synchronisieren Sie GreaseMonkey-Skripts zwischen Computern?
-
1
Kann ich ein Skript schreiben, das Benutzer automatisch wechselt?
-
6
Guter PowerShell-Leitfaden, der durch fortgeschrittene Verwendung Einstieg leistet
-
3
FTP "PUT" schlägt von der virtuellen Maschine aus, aber nicht vom Host-PC aus: 504 Der Befehl ist fü...
-
1
ksh entspricht perl $! Fehlerursache
-
2
Subskriptionsfehler außerhalb des Bereichs in VBScript-Skript
-
5
Wie wird eine Datei automatisch auf einen anderen PC im Netzwerk verschoben?