如果行不存在,则将文本文件中的行添加到新文本文件中

时间:2016-06-10 00:36:48

标签: windows powershell batch-file cmd

我有一个作为各种数据库运行的文件。我从HTTP JSON获取信息,经过一些处理后,我能够获得一个文本文件" temp.txt",其中包含以下内容:

Class: 00000001
Title: AAAAAAAA
Class: 00000002
Title: BBBBBBBB
Class: 00000001
Title: AAAAAAAA
Class: 00000003
Title: CCCCCCCC

其中Class是一个八位数字,Title是一个字符串,几乎可以包含任何字符。每个类都有一个特定的标题键,没有类与另一个类共享一个标题,没有标题与另一个标题共享一个类。类/标题配对可以在" temp.txt"。

内重复

我想要做的是从" temp.txt"逐行并将它们添加到新文件Class.txt中,但我不想将重复项添加到此新文件中。例如,上述样本的输出将具有重复的00000001类,其标题为AAAAAAAA:

Class: 00000001
Title: AAAAAAAA
Class: 00000002
Title: BBBBBBBB
Class: 00000003
Title: CCCCCCCC

同样,我需要一些通用的东西,因为不同的类可以有多个副本,我不知道哪些是重复的。我还需要使用Windows批处理文件或PowerShell执行此操作。

2 个答案:

答案 0 :(得分:0)

这是一个应该做你想做的批处理脚本:

for /F "tokens=*" %%X in (temp.txt) do (
>nul find "%%X" new.txt && (
echo.
) || (
echo %%X >>new.txt
)
)

答案 1 :(得分:0)

然而,对于我的OP中的初始格式化,MrGoodbytes13的答案是有效的(我只是改变了一切,因为在这篇文章中获取格式的信息会删除很多无关的代码并给我最后的输出我需要稍后管道另一个节目)。

我能够重新组织文件,以便“class.txt”文件读取

"Class","Title"
"00000001","AAAAAAAA"
"00000002","BBBBBBBB"
"00000001","AAAAAAAA"
"00000004","CCCCCCCC"

我还创建了一个包含

的“header.txt”文件
"Class","Title"

然后我使用powershell执行以下操作:

Get-Content class.txt | select -Skip 1 | Set-Content "class_temp.txt"
Move "class_temp.txt" class.txt -Force
gc class.txt | sort | get-unique >> class_temp.txt
Move "class_temp.txt" class.txt -Force
Get-Content header.txt | Out-File -Encoding ASCII -Append class_temp.txt
Get-Content class.txt | Out-File -Encoding ASCII -Append class_temp.txt
Move "class_temp.txt" class.txt -Force

前两行用数据从文件中删除标题。接下来的两行对数据进行排序并删除重复的行。最后三行创建一个文本文件,其中包含标题内容和新修剪数据。

我已设置好所有内容,因此powershell脚本还会将我从http JSON中获取的新类值附加到class.txt文件中,以便在运行上述行时,它将修剪添加到“ class.txt“脚本生成的文件。