0
First.txt
10.10.10.10
10.9.9.9
10.8.8.8
10.7.7.7

Second.txt
xx-xx-xx-xx-xx-xx
yy-yy-yy-yy-yy-yy
zz-zz-zz-zz-zz-zz
aa-aa-aa-aa-aa-aa

第一个文本文件是 IP 地址,第二个文本文件是 IP 地址的 MAC 详细信息,我需要如下所示的输出,此 IP 地址在 foreach 循环中,因此将检查每个 IP 地址的 MAC 详细信息并存储在 second.txt 中

10.10.10.10 mac details are xx-xx-xx-xx-xx-xx
10.9.9.9 mac details are yy-yy-yy-yy-yy-yy

我已经尝试了所有方法,但得到的输出像

10.10.10.10
10.9.9.9
10.8.8.8
10.7.7.7
mac details are 
xx-xx-xx-xx-xx-xx
yy-yy-yy-yy-yy-yy
zz-zz-zz-zz-zz-zz
aa-aa-aa-aa-aa-aa

我使用的代码是

get-content first.txt,second.txt | set-content joined.txt
4

1 回答 1

1

这不是很难做到,加入这两个文件。

关键是将这两个文件作为变量加载,然后使用for循环遍历这两个文件,一次一个,并组装新的输出。

$first = get-content C:\temp\stack\first.txt
$second = get-content C:\temp\stack\second.txt
$newfile = New-Object System.Collections.ArrayList

for ($i = 0; $i -lt $first.Count ; $i++)
{     
    "getting content from row number $i from both first and second to make a new row..."
    
    $newRow = "$($first[$i]) mac details are $($second[$i])"
    
    #add new row and copy the row number
    $rowNumber = $newfile.Add($newRow)

    "`t`tnew row added as row # $rowNumber in output variable"
}

$newfile | Out-File C:\temp\stack\out.txt 

该语法 "$($first[$i]) mac details...表示创建一个新字符串,然后在 $first 中的行或位置编号 $i 中获取 whats 的值

输出将如下所示:

getting content from row number 0 from both first and second to make a new row...
        new row added as row # 0 in output variable
getting content from row number 1 from both first and second to make a new row...
        new row added as row # 1 in output variable

为了您和未来的读者,我更加详细地教授了我正在做的事情背后的原则。学习这些一次单步执行文件、清理或构建新输出文件的技术,让您在 PowerShell 中走上成功之路:)

于 2021-06-06T12:41:48.437 回答