首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Powershell按列号拆分CSV文件

使用Powershell按列号拆分CSV文件
EN

Stack Overflow用户
提问于 2018-12-31 22:57:23
回答 1查看 190关注 0票数 0

我有一个CSV文件,大约有2500列,没有按管道|分隔符拆分的标题。

file.csv看起来像这样:

代码语言:javascript
复制
x,y,z,x1,x2,x3,x4,x5,x6,x7,x8,x9,...(about 2500 more)...,x2500
0,0,0,a1,a2,a3,a4,a5,a6,a7,a8,a9,...(about 2500 more)...,s2500
1,1,1,b1,b2,b3,b4,b5,b6,b7,b8,b9,...(about 2500 more)...,b2500
….

我想把这个文件根据它们的列号分成多个文件。使用Bash时,我使用了cut -d "|" -f1,2-901,并选择了要保存到新文件中的列。

输出:

file1.csv

代码语言:javascript
复制
Key1,x2,x3,x4,x5,x6,x7,x8,x9,...(about 900 more)...,x900  
Key2,a2,a3,a4,a5,a6,a7,a8,a9,...(about 900 more)...,a900  
Key3,b2,b3,b4,b5,b6,b7,b8,b9,...(about 900 more)...,b900 <BL>
… 

file2.csv

代码语言:javascript
复制
Key1,x901,x902,x903,x904,...(about 900 more)...,x1800  
Key2,a901,a902,a904,a904,...(about 900 more)...,a1800  
Key3,b901,b902,b903,b904,...(about 900 more)...,b1800  
…

我如何在Powershell中做到这一点?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-12-31 23:32:37

使用Select-Object仅获取所需的列。

为头/属性构建数组

此脚本创建了一个仅有25列的csv用于演示

代码语言:javascript
复制
## Q:\CsvData\2018\12\31\SO_53988782.ps1
$file = '.\Data.csv'

#create sample csv with headers x1..x25
(1..25|ForEach-Object{"x{0}" -f $_}) -join ',' | set-content $file
(1..25|ForEach-Object{$_}) -join ',' | add-content $file

Get-Content $file

$Range1 = 1..9  | ForEach-Object{"x{0}" -f $_}
$Range2 = 10..19| ForEach-Object{"x{0}" -f $_}

$CsvData = Import-csv $file

$CsvData | Select-Object $Range1 | Format-Table -auto

$CsvData | Select-Object $Range2 | Format-Table -auto

代码语言:javascript
复制
> Get-Content $file
x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25

代码语言:javascript
复制
> $CsvData | Select-Object $Range1 | Format-Table -auto

x1 x2 x3 x4 x5 x6 x7 x8 x9
-- -- -- -- -- -- -- -- --
1  2  3  4  5  6  7  8  9

代码语言:javascript
复制
> $CsvData | Select-Object $Range2 | Format-Table -auto

x10 x11 x12 x13 x14 x15 x16 x17 x18 x19
--- --- --- --- --- --- --- --- --- ---
10  11  12  13  14  15  16  17  18  19
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53988782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档