【问题标题】:Add line from text file to new text file if line does not exist如果行不存在,则将行从文本文件添加到新的文本文件
【发布时间】:2016-06-10 00:36:48
【问题描述】:

我有一个文件作为各种数据库运行。我正在从 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 类,并删除了标题 AAAAAAAAA:

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

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

【问题讨论】:

    标签: windows powershell batch-file cmd


    【解决方案1】:

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

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

    【讨论】:

    • 这确实有效,但我发现了一种更简单的 powershell 方法(见下文)。
    【解决方案2】:

    但是,对于我的 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" 脚本生成的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      相关资源
      最近更新 更多