2012-09-10 2 views
1

의 끝에서 표현을 찾을 수 없습니다. (아스키, TXT, 창) 나는 이미 대체 문자열에 사용되는 특정 스크립트,이 작업을 수행해야합니다파워 쉘의 -creplace 내가 찾아 PowerShell을 줄의 끝에서 일부 텍스트를 대체하기 위해 노력하고있어 라인

$inputText = [system.IO.File]::ReadAllText("Text.txt") 

$regex = '\\DE$|\DE_02' 

$regex > test.txt 

$th = [system.IO.File]::ReadAllText("test.txt") 

foreach($expression in $th) { 

if ($expression -eq 'EOF') { break } 

$parts = $expression.Split("|") 

if ($parts.Count -eq 2) { 

    $inputText = $InputText -creplace $parts 

    echo $inputText | out-file "Text_neu.txt" -enc ascii 
} 
} 

cmdlet이 지금까지 잘 작동하지만 줄의 끝 ($)를 일치하지 않을 수 있습니다 -

$inputText = [system.IO.File]::ReadAllText("Text.txt") 

$inputText.Replace("\DE\`r\`n","\DE_02\`r\`n") | Out-File Text_neu.txt 

는 알이 제대로 대체 것 : .- 또한

이 같은 시도

은 ...`대신 $의 r`n 시도했지만 작동하지 않았다.

그것은 또한 작동 할 수 있도록하는 방법이 기존의 스크립트를 변경할 수 있습니까?

답변

1

은 전체 텍스트가 아닌 하나의 행을 대체하고, 내가 제대로 스크립트를 이해한다면 잘 모르겠지만, 나는 당신의 문제라고 생각합니다.

그래서 $은 행의 끝이 아닙니다 (\r\n) 문자열 끝에 기본 일치가 있습니다!

당신은 인라인 수정 (?m)를 사용하여이 동작을 수정할 수 있습니다. 이렇게하면 $의 동작이 행 끝과 일치하도록 변경됩니다.

$regex = '(?m)\\DE$|\DE_02 

같이 정규 표현식을보십시오.

+0

오, 고마워요! 이것은 당신이 제안처럼 ... 그것은 작동하지 않습니다 여기에 문제가 될 수도 있지만 지금은) = 어디에서 해결책을 찾기 위해 알고 –

+0

아, 이제 내가 그것을 얻었다! 그것은 당신이 \'r \'n 대신에 $ ^^라고 말했던 것과 같습니다. 감사합니다 !!! =) –

관련 문제