如何在两个文本文件中连接相应的行

时间:2014-08-19 20:52:00

标签: powershell batch-file concatenation

我需要通过将文件#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命令。在此先感谢!!

1 个答案:

答案 0 :(得分:1)

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

$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