如何将CSV文件中的2个相邻列合并为单个列,并以逗号分隔? (电源外壳)

时间:2018-12-24 17:36:13

标签: powershell csv merge

我有一个包含2列(纬度和经度)的CSV文件。我正在尝试将2列合并为1,并以逗号分隔(无空格)。

输入CSV文件,前5行

latitude    longitude
35.1868     -106.6652
42.3688     -83.4799
40.3926     -79.9052
40.5124     -88.9883
38.5352     -90.0006

我的目标是使用CSV并使用单列创建一个新的CSV文件,并且两个值之间都用逗号隔开(中间没有空格)。请参阅下面的所需输出...

location
35.1868,-106.6652
42.3688,-83.4799
40.3926,-79.9052
40.5124,-88.9883
38.5352,-90.0006

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

前十行只是将示例数据嵌入脚本中的一种方法,而无需将其写入文件然后再读回。[ grin ]

使用export interface IHeaders { [key: string]: any }; 将真实数据输入脚本。

let options: IRequestOptions = {additionalHeaders: {'key' : 'value' }};
let rest: rm.RestClient = new rm.RestClient(param1, param2, param3, options);
...

屏幕输出...

Import-CSV

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

答案 1 :(得分:0)

IMO最简单的方法是选择具有计算属性的对象

Import-Csv .\input.csv | 
  Select-Object @{Name='Location';Expression={$_.latitude,$_.longitude -join ','}} |
    Export-Csv .\output.csv -NoTypeInformation

> Get-Content .\output.csv
"Location"
"35.1868,-106.6652"
"42.3688,-83.4799"
"40.3926,-79.9052"
"40.5124,-88.9883"
"38.5352,-90.0006"