如何在 Powershell 中只删除第一次出现的没有“}”的行?
How to delete only first ocurrence of line without "}" in Powershell?
我尝试删除文件中的回车 return,所有行的末尾都有一个“}”,但有些行有一个 return 回车,而“}”在其下方。 .. 这是我的代码和文件的示例,但不起作用。非常感谢!!
Original File
与“INGENIERIA Y SERVICIOS LOS NOGALES SPA”这行有冲突。
Expected Result
代码:
$InputFile='Original.txt'
$OutPutFile='NewFile.txt'
(Get-Content $InputFile) | ForEach-Object -Begin {
$results = @()
} -Process {
$out = $.Split("}").GetUpperBound(0)
[int]$iOut = [int]$out
if($iOut -lt 1){$.Replace("`r`n","")}else{$_}
} | Set-Content $OutPutFile
谢谢!
您可以执行以下操作:
(Get-Content $InputFile -Raw) -replace '(?<!})\r\n' |
Set-Content $outputfile
使用不带-Raw
或-ReadCount
参数的Get-Content
读取文件,读取每一行并将其作为数组元素输出。一旦找到分隔符,就会输出一行。 Get-Content
的默认分隔符是行尾字符。 -Raw
允许保留换行符并将文件作为单个字符串读取。
(?<!})
是负向后视匹配,仅当前面的字符不是 }
时。然后我们简单地将 \r\n
匹配为 CRLF
.
我尝试删除文件中的回车 return,所有行的末尾都有一个“}”,但有些行有一个 return 回车,而“}”在其下方。 .. 这是我的代码和文件的示例,但不起作用。非常感谢!!
Original File
与“INGENIERIA Y SERVICIOS LOS NOGALES SPA”这行有冲突。
Expected Result
代码:
$InputFile='Original.txt'
$OutPutFile='NewFile.txt'
(Get-Content $InputFile) | ForEach-Object -Begin {
$results = @()
} -Process {
$out = $.Split("}").GetUpperBound(0)
[int]$iOut = [int]$out
if($iOut -lt 1){$.Replace("`r`n","")}else{$_}
} | Set-Content $OutPutFile
谢谢!
您可以执行以下操作:
(Get-Content $InputFile -Raw) -replace '(?<!})\r\n' |
Set-Content $outputfile
使用不带-Raw
或-ReadCount
参数的Get-Content
读取文件,读取每一行并将其作为数组元素输出。一旦找到分隔符,就会输出一行。 Get-Content
的默认分隔符是行尾字符。 -Raw
允许保留换行符并将文件作为单个字符串读取。
(?<!})
是负向后视匹配,仅当前面的字符不是 }
时。然后我们简单地将 \r\n
匹配为 CRLF
.