Powershell Select-String删除回车符

时间:2012-11-30 19:08:53

标签: powershell

我正在尝试在报告中的各行中选择回车。最后,我想删除回车。如果我使用"`n""`r""\n""\r",我就无法获得任何结果。当我在Vi中访问报表时,我可以看到回车符(^L)。所以我不知道该做什么,而是把头发拉出来。

ls C:\DOWNLOAD\STANDARD\AUDIT*PRM3711* | %{ gc $_ | Select-String -Pattern '\** WARNING \** -  ' }

结果

** WARNING ** -  SAMPLE REPORT
** WARNING ** -  SAMPLE REPORT
** WARNING ** -  SAMPLE REPORT
** WARNING ** -  SAMPLE REPORT

3 个答案:

答案 0 :(得分:1)

gc以行数组的形式返回文件内容,不包含换行符。

如果你需要跨行匹配,我会建议this answer的方法,例如:

$content = [IO.File]::ReadAllText( $_.FullName )
if( $content -match "(?s)..." ) {
  # use values in $matches
}

要从匹配项中删除换行符,请尝试$matches[0] -replace [Environment]::NewLine$matches[0] -replace "`r*`n*"

答案 1 :(得分:0)

在powershell回车+换行中的

应为`n

我认为你可以使用它:

[string]::Join("",(gc 'C:\temp\test.txt'))

答案 2 :(得分:0)

Powershell使用

`r`n 

用于回车换行

get-content生成一个字符串数组

所以你可以使用 $result = (cat C:\DOWNLOAD\STANDARD\AUDIT*PRM3711* | where { $_ -like '** WARNING ** - ' } ) $result = $result -replace '** WARNING ** - ' , 'rn** WARNING ** - '

或者,我认为在PS3中你可以通过使用它来使它成为一条长行而不是数组 r

我现在面前没有PS3盒子......