pesquise uma palavra em arquivos .txt e escreva poucas linhas no novo arquivo .txt

2

Por favor, ajude-me a criar um script para realizar tarefas conforme descrito abaixo. Eu tenho 2 arquivos. A.txt e B.txt Conteúdo de A.txt conforme abaixo

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

agora eu preciso procurar em A.txt pela palavra "FRUIT", e copiar a segunda linha em cima da "FRUIT" para um novo arquivo chamado

list.txt. MAS eu só preciso do nome da fruta, onde o arquivo.txt deve ser parecido com abaixo.

APPLE

ORANG

CHERY

Esta é a minha codificação (shel powel) para fazer isso ...

$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

}

Isto irá extrair a 2ª linha do topo conforme abaixo

name APPLE

name ORANG

name CHERY

E abaixo, o código (.bat) removerá a palavra "nome".

@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

)

Como segunda fase, agora eu preciso procurar por palavra no arquivo list.txt (APPLE, ORANG, CHERY .....) no meu B.txt .. B.txt será

parece como abaixo.

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

E agora, eu preciso pesquisar os mundos do list.txt em B.txt, e extrair a linha top 3 e escrevê-la de acordo com o novo arquivo

chamado done.txt ............ abaixo é minha codificação (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

}

Eu consegui desenvolver codificação para isso. mas eu preciso de 3 arquivos de script (2 powershel e 1 lote) para concluir esta operação. Gentilmente

me ajude a concluir esta tarefa em um único script. Será melhor se estiver em .vbs ou .bat. Por favor me ajude .. obrigada.

    
por Poobalan 28.03.2015 / 16:54

0 respostas