【问题标题】:How to concatenate corresponding lines in two text files如何连接两个文本文件中的对应行
【发布时间】:2014-08-19 20:52:00
【问题描述】:

我有两个文本文件,我需要通过将文件 #2 中的第 n 行连接到文件 #1 的第 n 行来组合文件 #3 的第 n 行。它们将始终具有相同的行数并且始终匹配(即一个文件中的第 1 行与第二个文件中的第 1 行匹配)。我必须将这两个文件连接成一个新的第三个文件。字段之间没有添加空格。我正在运行 Windows 7 并使用批处理文件,但如果这是一个更好的选择,我可以使用 powershell。这是名为 test.txt 的第一个文件的示例:

13CT162| 
13MM1364 VOP AFF| 
13MM1872| 
14ct70| 
Another| 
brake f_Page_1|
brake f_Page_2| 
brake f_Page_3| 
brake f_Page_4| 
brake f_Page_5|

这是来自名为 Index1.txt 的第二个文件的相应信息:

\\TEST-CLER\COMPLETE\13CT162.tif
\\TEST-CLER\COMPLETE\13MM1364 VOP AFF.tif
\\TEST-CLER\COMPLETE\13MM1872.tif
\\TEST-CLER\COMPLETE\14ct70.tif
\\TEST-CLER\COMPLETE\Another.tif
\\TEST-CLER\COMPLETE\brake f_Page_1.tif
\\TEST-CLER\COMPLETE\brake f_Page_2.tif
\\TEST-CLER\COMPLETE\brake f_Page_3.tif

\\TEST-CLER\COMPLETE\brake f_Page_4.tif
\\TEST-CLER\COMPLETE\brake f_Page_5.tif

我需要新文件看起来像这样(第 1 行):

13CT162|\\TEST-CLER\COMPLETE\13CT162.tif

我可以找到很多关于如何附加文件的帮助,但很少能找到关于如何将两个文件连接到第三个文件的帮助。这里有一个现有的答案,但它适用于 Python。我必须使用 Win 7 cmd 或 powershell 命令。提前致谢!!

【问题讨论】:

    标签: powershell batch-file concatenation


    【解决方案1】:

    您可以在 PowerShell 中使用 For 循环来执行此操作:

    $File1 = Get-Content C:\Path\To\File1.txt
    $File2 = Get-Content C:\Path\To\File2.txt
    $File3 = @()
    For($a=0;$a -lt $File1.count;$a++){
        $File3+=$File1[$a].trim()+$File2[$a].trim()
    }
    $File3 | Out-File C:\Path\To\NewFile.txt
    

    编辑:好的,我没有想到单行文件。这将使 $File1 和/或 $File2 字符串而不是数组。我们可以很容易地使它们成为数组,以便它可以正确地索引到它们:

    $File1 = @((Get-Content C:\Path\To\File1.txt))
    $File2 = @((Get-Content C:\Path\To\File2.txt))
    $File3 = @()
    For($a=0;$a -lt $File1.count;$a++){
        $File3+=$File1[$a].trim()+$File2[$a].trim()
    }
    $File3 | Out-File C:\Path\To\NewFile.txt
    

    【讨论】:

    • 做到了!惊人的。非常感谢您快速而精彩的回答!
    • 嘿,我的老板刚刚指出了这个脚本的一个问题——如果被连接的文件只有一行——那么没有任何东西写入新文件。即使file1和file2只有一行且没有回车符,它是什么开关告诉PS制作文件?我需要在原始文件中回车吗?
    • 你是对的,尝试编辑,应该可以解决它。这是因为单行文件作为字符串而不是数组被读入。我强迫它们成为一个带有编辑的数组,所以它现在可以正确地索引它们。
    • 等等,对不起,今天是星期五下午……我脑残了。那么在两个文件中添加一个 CRLF 呢?这些文件是由另一个脚本动态生成的——当脚本生成它们并且只有一行时,我的部分任务失败了。如果是其他脚本生成的,不知道怎么添加到txt文件中。
    • 不,我的答案中编辑的代码应该适用于单行文件(以及多行文件,就像以前一样)
    猜你喜欢
    • 2012-02-03
    • 2022-01-27
    • 2023-03-03
    • 2010-10-29
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多