【问题标题】:How can I combine multiple groups of lines in a file?如何在一个文件中组合多组行?
【发布时间】:2016-05-10 12:21:05
【问题描述】:

我正在尝试将文件中的几组行组合成 CSV 行(这些组之间用一个空行分隔)。我刚刚为这个示例复制了几行,但实际数据文件中每个组的信息会有所不同。

IM123456
2016 年 1 月 20 日 09:44:01
重新分配
PZSR7Z
从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx


IM123456
2016 年 1 月 20 日 09:44:01
重新分配
PZSR7Z
从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx


IM123456
2016 年 1 月 20 日 09:44:01
重新分配
PZSR7Z
从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx


IM123456
2016 年 1 月 20 日 09:44:01
重新分配
PZSR7Z
从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx

IM123456
2016 年 1 月 20 日 09:44:01
重新分配
PZSR7Z
从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx 

使用上面粘贴的输出,我怎样才能让它类似于以下内容?

IM123456,01/20/16 09:44:01,重新分配,PZSR7Z,从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx
IM123456,01/20/16 09:44:01,重新分配,PZSR7Z,从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx
IM123456,01/20/16 09:44:01,重新分配,PZSR7Z,从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx
IM123456,01/20/16 09:44:01,重新分配,PZSR7Z,从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx
IM123456,01/20/16 09:44:01,重新分配,PZSR7Z,从 xxx-xxx-xxx-xxx 重新分配到 xxx-xxx-xxx-xxx-xxx-xxx-xxx 

我尝试使用来自 here 的解决方案,但我很难将其应用到我的示例中。

【问题讨论】:

    标签: windows csv powershell


    【解决方案1】:

    读取整个文件,将其拆分为 2 个或更多连续换行符,删除空元素,然后用逗号替换剩余的换行符并将所有内容写回文件。

    (Get-Content 'C:\path\to\input.txt' -Raw) -split ' *(\r\n){2,}' |
      Where-Object { $_.Trim() } |
      ForEach-Object { $_ -replace ' *\r\n', ',' } |
      Set-Content 'C:\path\to\output.csv'
    

    如果您的 PowerShell 版本不支持 Get-Content -RawGet-Content 输出通过 Out-String 管道:

    (Get-Content 'C:\path\to\input.txt' | Out-String) ...
    

    【讨论】:

    • 太棒了,谢谢!弄清楚这一切是如何运作的
    • 甚至更短...(Get-Content 'C:\path\to\input.txt' -Raw) -split "(?:\r\n){2,}" -replace "\s*\r\n",','
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多