我只想 select PowerShell 中 CSV 文件中的唯一项目
I would like to select only unique items from a CSV file in PowerShell
我有一个没有 header 或列名的 CSV 文件。
数据是 IP 地址列表
112.64.127.98
112.64.127.98
112.64.127.98
58.18.221.37
58.18.221.37
89.165.3.1
89.165.3.1
89.165.3.1
89.165.3.1
89.165.3.1
89.165.3.1
我想select每组只有一个。
我似乎找不到任何方法来做到这一点,因为我没有 header 或列名。
我找到的所有方法都指向带有 header.
的 select 语句
我试过使用这种方法:
$SQLFailedIPcsv = $SQLFailedIPcsv|sort-object | Get-Unique –AsString
但这似乎不起作用。知道如何 select 这些 IP 中的每一个吗?
您可以使用 Import-Csv
导入文件并使用 -Header IP
创建一个 header。这将为您的 IP 地址数据提供一个名称为 IP
的 header。
要获得唯一的 IP 地址,我们可以将其通过管道传输到 Select-Object
,用 -ExpandProperty
扩展列 属性,然后用 -Unique
获得唯一的项目。
Import-Csv -Path .\ip.csv -Header IP | Select-Object -ExpandProperty IP -Unique
这将给出唯一的 IP 地址:
112.64.127.98
58.18.221.37
89.165.3.1
如果我们想保留 IP
列 header,我们可以使用 -Property
代替:
Import-Csv -Path .\ip.csv -Header IP | Select-Object -Property IP -Unique
这将给出:
IP
--
112.64.127.98
58.18.221.37
89.165.3.1
更新
如果我们想使用 foreach
枚举,我们可以将其包装在脚本块中并使用 Call operator &
。然后我们可以将它通过管道传递给 Select-Object -Unique
。
$csv = Import-Csv -Path .\ip.csv -Header IP
& {
foreach ($row in $csv) {
$row.IP
}
} | Select-Object -Unique
# 112.64.127.98
# 58.18.221.37
# 89.165.3.1
因为这只是一个 IP 地址列表,每个都在其自己的行上,您可以这样做
Get-Content -Path 'X:\TheFile.csv' | Select-Object -Unique
我有一个没有 header 或列名的 CSV 文件。 数据是 IP 地址列表
112.64.127.98
112.64.127.98
112.64.127.98
58.18.221.37
58.18.221.37
89.165.3.1
89.165.3.1
89.165.3.1
89.165.3.1
89.165.3.1
89.165.3.1
我想select每组只有一个。 我似乎找不到任何方法来做到这一点,因为我没有 header 或列名。 我找到的所有方法都指向带有 header.
的 select 语句我试过使用这种方法:
$SQLFailedIPcsv = $SQLFailedIPcsv|sort-object | Get-Unique –AsString
但这似乎不起作用。知道如何 select 这些 IP 中的每一个吗?
您可以使用 Import-Csv
导入文件并使用 -Header IP
创建一个 header。这将为您的 IP 地址数据提供一个名称为 IP
的 header。
要获得唯一的 IP 地址,我们可以将其通过管道传输到 Select-Object
,用 -ExpandProperty
扩展列 属性,然后用 -Unique
获得唯一的项目。
Import-Csv -Path .\ip.csv -Header IP | Select-Object -ExpandProperty IP -Unique
这将给出唯一的 IP 地址:
112.64.127.98
58.18.221.37
89.165.3.1
如果我们想保留 IP
列 header,我们可以使用 -Property
代替:
Import-Csv -Path .\ip.csv -Header IP | Select-Object -Property IP -Unique
这将给出:
IP
--
112.64.127.98
58.18.221.37
89.165.3.1
更新
如果我们想使用 foreach
枚举,我们可以将其包装在脚本块中并使用 Call operator &
。然后我们可以将它通过管道传递给 Select-Object -Unique
。
$csv = Import-Csv -Path .\ip.csv -Header IP
& {
foreach ($row in $csv) {
$row.IP
}
} | Select-Object -Unique
# 112.64.127.98
# 58.18.221.37
# 89.165.3.1
因为这只是一个 IP 地址列表,每个都在其自己的行上,您可以这样做
Get-Content -Path 'X:\TheFile.csv' | Select-Object -Unique