【问题标题】:Issues replacing new line in PowerShell script替换 PowerShell 脚本中的新行的问题
【发布时间】:2013-12-07 20:06:34
【问题描述】:

我有一个 CSV 文件,例如:

data1,data2,data3,data4,data5
,,,,,
data6,data7,data8,data9,data0

新行是在 Notepad++ 中查看的 CRLF (`r`n)。

我在我的 PowerShell 脚本中有这个删除所有逗号的行:

(Get-Content $csvPath) | Foreach-Object {$_ -replace ",,,,,`r`n", ""} | Set-Content $csvPath2

脚本不会检测返回。即使我删除了逗号并只有`r`n。但是,我可以用`r`n 替换逗号而不会出现问题。

如何删除整行逗号,使其如下所示?

data1,data2,data3,data4,data5
data6,data7,data8,data9,data0

【问题讨论】:

    标签: file powershell csv replace newline


    【解决方案1】:

    用途:

    $lines = get-content C:\temp\test.txt | ?{$_ -notlike ",,,,*"}
    $lines.count
    

    这里的文件 test.txt 包含:

    data1,data2,data3,data4,data5
    ,,,,
    data6,data7,data8,data9,data0
    

    输出是:

    data1,data2,data3,data4,data5
    data6,data7,data8,data9,data0
    

    【讨论】:

    • 知之甚少是正确的。您最初的尝试不起作用的原因是默认情况下,Get-Content 返回一个字符串数组,分隔符是换行符。因此,当您将其通过管道传输到 ForEach-Object 时,任何单独的行都不会有换行符。或者,如果您真的想使用 -replace 方法,请将 -Raw 参数添加到 Get-Content cmdlet(如果您使用的是 PowerShell 2 或更低版本,则使用 -ReadCount 0)。
    • 非常感谢你们。 Knows Not Much 的解决方案奏效了。 @KevinD 谢谢你的解释。它为什么不起作用是有道理的。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 2021-06-09
    • 2018-02-22
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多