根据现有的 csv 列值创建 csv 列

时间:2021-04-22 09:43:35

标签: powershell

以下是我现有的 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

请在如何执行此操作方面需要帮助。

1 个答案:

答案 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