искать слово в файлах .txt и записать несколько строк в новый файл .txt

515
Poobalan

Пожалуйста, помогите мне создать скрипт для выполнения задачи, как описано ниже. У меня есть 2 файла. A.txt и B.txt Содержание A.txt согласно ниже


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 

Теперь мне нужно поискать в A.txt слово «FRUIT» и скопировать 2-ю строку поверх «FRUIT» в новый файл с именем

list.txt. НО мне нужно только название фрукта, где list.txt должен выглядеть следующим образом.

APPLE  ORANG  CHERY 

Это моя кодировка (Powel Shel), чтобы сделать это ...


$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  } 

Это извлечет 2-ю верхнюю строку, как показано ниже

name APPLE  name ORANG  name CHERY 

А ниже кодировка (.bat) уберет слово «имя».


@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  ) 

На втором этапе теперь мне нужно искать слово в файле list.txt (APPLE, ORANG, CHERY .....) в моем B.txt .. B.txt будет

выглядит как ниже.


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 

И теперь я должен найти миры из list.txt в B.txt, извлечь 3 верхние строки и записать их соответственно в новый файл.

названный done.txt ............ ниже моя кодировка (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  } 

Мне удалось разработать код для этого. но мне нужно 3 файла сценария (2 powershel и 1 партия), чтобы завершить эту операцию. доброжелательно

помогите мне выполнить эту задачу в одном скрипте. Будет лучше, если он будет в .vbs или .bat. Пожалуйста, помогите мне .. спасибо.

2

0 ответов на вопрос

Похожие вопросы