gpt4 book ai didi

Powershell:将下一行与当前行合并

转载 作者:行者123 更新时间:2023-12-04 00:59:33 32 4
gpt4 key购买 nike

我正在寻找所需的输出,如下所示。主要概念是将下一行与当前行连接起来,如果当前行以字符结尾,则将结果合并为一行。

谢谢

Current Output Desired Output

$file = 'textfile.txt'
$reportObject = @()

foreach ($line in $file) {

$content = [IO.File]::ReadAllLines($file)

for ($i = 0; $i -lt $content.count; $i++) {

$line = $content[$i]

if ($line.StartsWith("Users")) {

$a = 0

while ($content[$i + $a].EndsWith("\")) { #"

$reportObject += $content[$i + $a]

$a++

}

$reportObject += $content[$i + $a]

}

}
$reportObject
}

最佳答案

# Use
# $reportObject = (Get-Content ...
# to assign the resulting array of lines to your variable.
(Get-Content -Raw textfile.txt) -replace '\\\r?\n' -split '\r?\n'
  • Get-Content -Raw textfile.txt 由于使用 Get-Content 将整个文件读取为单个多行字符串。的 -Raw 开关。

  • -replace '\\\r?\n' 替换 \ 字符。 (转义为 \\),后跟换行符 (\r?\n)[1] 以及(隐含的)空字符串,以及因此有效地删除匹配的序列。

    • 有关基于正则表达式的 -replace 运算符的更多信息,请参阅 this answer .
  • -split '\r?\n' 将生成的字符串拆分回单个行的数组。

    • 有关基于正则表达式的 -split 运算符的更多信息,请参阅 about_Split .

注意:如果输入文件有尾随换行符,则上述数组末尾将有一个额外的元素:

  • 如果输入中没有其他个空行(您需要保留),您只需将 -ne '' 附加到上面的命令即可删除所有空字符串元素。

  • 要仅删除最后元素,最简单(尽管不是最有效)的解决方案是附加
    | Select-Object -SkipLast 1 - 请参阅Select-Object的文档。


[1] 此正则表达式是匹配换行符的跨平台方式:它匹配 Windows 风格的 CRLF 序列 (\r\n) 和 Unix 风格的仅 LF 序列(\n) 换行符。

关于Powershell:将下一行与当前行合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60154860/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com