以下是我现有的 csv
InterfaceID A_IP A_Hostname B_IP B_Hostname
14474 10.10.90.6 lnx0408.com 17.11.12.3 DEPC0322.com
14474 10.20.90.6 lnx0409.com 17.11.12.4 DEPC0323.com
12527 10.30.90.6 lnx0410.com 17.11.12.5 DEPC0324.com
12527 10.40.90.6 lnx0411.com 17.11.12.6 DEPC0325.com
在一个文本文件中,我有这个界面位置的位置详细信息,如下所示,由 “tab”
分隔Neuremburg Masergy 20 14474
Madrid Masergy 40 12527
现在我需要根据来自 csv 的 InterfaceID 值从文本文件中获取前两个值并创建 2 列。所以所需的输出应该如下所示
InterfaceID City region A_IP A_Hostname B_IP B_Hostname
14474 Neuremburg Masergy 10.10.90.6 lnx0408.com 17.11.12.3 DEPC0322.com
14474 Neuremburg Masergy 10.20.90.6 lnx0409.com 17.11.12.4 DEPC0323.com
12527 Madrid Masergy 10.30.90.6 lnx0410.com 17.11.12.5 DEPC0324.com
12527 Madrid Masergy 10.40.90.6 lnx0411.com 17.11.12.6 DEPC0325.com
请在如何执行此操作方面需要帮助。
答案 0 :(得分:0)
将您的文件导入为 csv,遍历主文件中的每一行并使用 Where-Object
进行简单查找 - 因为它是一个对象,然后在 $fetchedOutput
中收集该内容 - 也已分隔 - 转换它返回并输出为表格。
$csv = Import-Csv -Path "yourCSV" -Delimiter "`t"
$textfile = Import-Csv -Path "yourTextfile" -Delimiter "`t" -Header "City","Region","Something","InterfaceID"
$fetchedOutput = Foreach($c in $csv){
$cInterfaceId = $c.InterfaceID
$cA_IP = $c.A_IP
$cA_Hostname = $c.A_Hostname
$cB_IP = $c.B_IP
$cB_Hostname = $c.B_Hostname
$cCityAndReg = $txt | Where-Object {$_.InterfaceID -eq $cInterfaceId}
"$cInterfaceId;$($cCityAndReg.City);$($cCityAndReg.Region);$cA_IP;$cA_Hostname;$cB_IP;$cB_Hostname"
}
$fetchedOutput | ConvertFrom-Csv -Delimiter ";" -Header "InterfaceID","City","Region","A_IP","A_Hostname","B_IP","B_Hostname" | Format-Table