Suchen Sie nach einem Wort in TXT-Dateien und schreiben Sie einige Zeilen in die neue TXT-Datei

646
Poobalan

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.

2

0 Antworten auf die Frage