在 .txt 文件中搜索一个单词并将几行写入新的 .txt 文件中

在 .txt 文件中搜索一个单词并将几行写入新的 .txt 文件中

请帮助我创建一个脚本来执行下面描述的任务。我有 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”,然后将“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

}

这将提取第二行,如下所示

name APPLE

name ORANG

name CHERY

下面的编码(.bat)将删除单词“name”。


@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

)

作为第二阶段,现在我需要在我的 B.txt 中的 list.txt 文件中搜索单词 (APPLE、ORANG、CHERY......)。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

现在,我必须从 B.txt 中的 list.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。请帮帮我...谢谢。

相关内容