首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入-Csv选择-Skip

导入-Csv选择-Skip
EN

Stack Overflow用户
提问于 2017-01-23 23:27:19
回答 3查看 5.7K关注 0票数 0

我有多个CSV文件需要合并为一个。在每个单独的CSV文件中都有一个标题,在第二行中有一些我不需要的文本。

我注意到了头文件的| Select -Skip 1语句。现在我想知道如何跳过第三行?

我试过了,但这给了我一个空文件

代码语言:javascript
复制
Get-ChildItem -Path $CSVFolder -Recurse -Filter "*.csv" | %{
  Import-Csv $_.FullName -Header header1, header3, header4 |
    Select -Skip 1 | Select -Skip 2
} | Export-Csv "C:\Export\result.csv" -NoTypeInformation
EN

回答 3

Stack Overflow用户

发布于 2017-01-23 23:37:35

Select-Object不允许您跳过其他行之间的任意行。如果要从文本输入文件中删除特定行,可以使用计数器执行此操作,例如:

代码语言:javascript
复制
$cnt = 0
Import-Csv 'C:\path\to\input.csv' |
  Where-Object { ($cnt++) -ne 3 } |
  Export-Csv 'C:\path\to\output.csv' -NoType

如果输入CSV中的记录没有嵌套换行符,您还可以使用Get-Content/Set-Content,它可能比Import-Csv/Export-Csv快一点(因为解析开销较小)。将要跳过的行号增加1,以说明标题行。

代码语言:javascript
复制
$cnt = 0
Get-Content 'C:\path\to\input.csv' |
  Where-Object { ($cnt++) -ne 4 } |
  Set-Content 'C:\path\to\output.csv'
票数 0
EN

Stack Overflow用户

发布于 2017-01-24 02:02:43

尝尝这个

代码语言:javascript
复制
$i=0;
import-csv "C:\temp2\missing.csv" | %{$i++; if ($i -ne 3) {$_}} | export-csv  "C:\temp2\result.csv" -NoTypeInformation
票数 0
EN

Stack Overflow用户

发布于 2020-08-17 10:05:21

如果您所做的只是在所有用户情况下跳过第一行,那么只需使用-skip 3。

代码语言:javascript
复制
Get-Content -Path 'D:\Temp\UserRecord.csv'
# Results
<#
Name     Codes
------- ---------
John    AJFKC,EFUY
Ben    EFOID, EIUF
Alex    OIPORE, OUOIJE
#>


# Return all text after row the Header and row 3
(Get-Content -Path 'D:\Temp\UserRecord.csv') | 
Select -Skip 3

# Results
<#
Ben    EFOID, EIUF
Alex    OIPORE, OUOIJE
#>

另请参阅:

Parsing Text with PowerShell (1/3)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41809842

复制
相关文章

相似问题

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