如何将CSV文件中的两个相邻列合并为一列,并用逗号分隔?(PowerShell)
我有一个CSV文件,有两列,纬度和经度。我试图将两列合并为一列,用逗号分隔(没有空格) 输入CSV文件,前5行如何将CSV文件中的两个相邻列合并为一列,并用逗号分隔?(PowerShell),powershell,csv,merge,Powershell,Csv,Merge,我有一个CSV文件,有两列,纬度和经度。我试图将两列合并为一列,用逗号分隔(没有空格) 输入CSV文件,前5行 latitude longitude 35.1868 -106.6652 42.3688 -83.4799 40.3926 -79.9052 40.5124 -88.9883 38.5352 -90.0006 我的目标是使用PowerShell获取此CSV并创建一个新的CSV,其中包含一列,两个值之间用逗号分隔(中间没有空格)。请参阅下面
latitude longitude
35.1868 -106.6652
42.3688 -83.4799
40.3926 -79.9052
40.5124 -88.9883
38.5352 -90.0006
我的目标是使用PowerShell获取此CSV并创建一个新的CSV,其中包含一列,两个值之间用逗号分隔(中间没有空格)。请参阅下面所需的输出
location
35.1868,-106.6652
42.3688,-83.4799
40.3926,-79.9052
40.5124,-88.9883
38.5352,-90.0006
任何帮助都将不胜感激 前十行只是在脚本中嵌入示例数据的一种方式,无需将其写入文件,然后将其读回。[咧嘴笑] 使用
Import CSV
将真实数据获取到脚本中
# fake reading in a CSV file
# in real life, use Import-CSV
$InStuff = @'
latitude, longitude
35.1868, -106.6652
42.3688, -83.4799
40.3926, -79.9052
40.5124, -88.9883
38.5352, -90.0006
'@ | ConvertFrom-Csv
$LocationList = foreach ($IS_Item in $InStuff)
{
[PSCustomObject]@{
Location = @($IS_Item.Latitude, $IS_Item.Longitude) -join ','
}
}
# on screen
$LocationList
# CSV file
$LocationList |
Export-Csv -LiteralPath "$env:TEMP\JohnnyCarino_LocationList.csv" -NoTypeInformation
屏幕输出
Location
--------
35.1868,-106.6652
42.3688,-83.4799
40.3926,-79.9052
40.5124,-88.9883
38.5352,-90.0006
CSV文件内容
"Location"
"35.1868,-106.6652"
"42.3688,-83.4799"
"40.3926,-79.9052"
"40.5124,-88.9883"
"38.5352,-90.0006"
最简单的方法是使用计算属性选择对象
Import-Csv .\input.csv |
Select-Object @{Name='Location';Expression={$_.latitude,$_.longitude -join ','}} |
Export-Csv .\output.csv -NoTypeInformation
编辑 如果有其他不受合并影响的列,
查看此修改的
选择对象
Select-Object *,@{N='Location';E={$_.latitude,$_.longitude -join ','}} -Exclude latitude,longitude|
但是新列将是最后一列。导入CSV,迭代生成的集合,构建一个新的PSCustomObject,并将源中的两个道具连接到一个新属性中。然后将其导出到新的CSV文件。这似乎涵盖了这些想法。。。[咧嘴笑]@Lee_Dailey谢谢你的回复。我知道这个概念对于更有经验的人来说非常简单。这是我正在努力解决的语法问题。您愿意根据我提供的信息编写一个示例命令吗?当然!我将在一两分钟后发布一个片段。。。[咧嘴笑]@JohnnyCarino-非常欢迎你!很高兴能帮助。。。[咧嘴笑]
Select-Object *,@{N='Location';E={$_.latitude,$_.longitude -join ','}} -Exclude latitude,longitude|