2012-07-17 2 views
2

foreach를 사용하고 텍스트 파일을 바꾸어 문자를 줄 바꿈 및 x 수만큼 들여 쓰기 할 수있는 방법이 있습니까? 독특한 요청이지만, 다른 프로그램에서 읽을 수 있도록하는 것입니다.문자를 대문자로 바꾸고 powershell에서 줄 바꿈을 사용하십시오.

샘플 텍스트 :!

dyreriket | {Animalia}
leddormer의 @ {환형 동물문}
¤igler의 $ {빈모 류}

기호 |, @, ¤, $와 많은 것은 줄 바꿈과 주어진 수의 들여 쓰기로 대체되어야합니다. 들여 쓰기가 작동하도록 할 수는 있지만 줄 바꿈은 할 수 없습니다. `n을 사용할 때 응답이 없습니다. 원래 문자 만 제거합니다. 지금까지이 코드를 가지고 놀았습니다.

$t1 = '\@'; 
$r1 = "`n`t`t"; 
$t2='\¤'; 
$r2="`n"; 

Get-Content C:\arter\test.txt ` 
    | ForEach-Object { $_ -creplace $t1, $r1; } ` 
    |ForEach-Object { $_ -creplace $t2, $r2; } ` 
    | Out-File C:\arter\test2.txt ; 
당신은이 같은 라인 별 텍스트 교체 할 수

답변

1

: Input.txt|, !, @, , 또는 $ 문자의 모든 항목을 대체 할 regular expression character classes을 사용

$searchText = '[|[email protected]☼$]'; 
$replacementText = "`r`n`t`t"; 

Get-Content -Path Input.txt ` 
    | ForEach-Object { $_ -creplace $searchText, $replacementText; } ` 
    | Out-File -FilePath Output.txt; 

을 줄 바꿈 다음에 캐리지 리턴 다음에 두 개의 탭이오고 결과 텍스트는 Output.txt에 씁니다. 대/소문자를 구분하지 않고 검색하려면 -replace 또는 -ireplace 연산자를 사용하십시오.

+0

답장을 보내 주셔서 감사합니다.하지만 예약 된 문자 또는 기타 이유로 인해 일치하지 않는 결과가 표시됩니다. 대체 할 때 | 그것은 문서의 모든 단일 문자 사이에 't를 추가합니다. 그리고 그것은 'n'을 무시합니다. –

+0

'-replace' 연산자의 대체 텍스트 매개 변수는 [.NET 정규 표현식]입니다 (http://msdn.microsoft.com/library/az24scfc.aspx). 파이프는 정규 표현식의 특수 문자이므로'\\ '로 이스케이프 처리해야합니다. PowerShell이 ​​아닌 .NET 정규식 엔진에서 이스케이프 처리를한다는 점에 유의하십시오. 따라서 Backtick 대신 백 슬래시를 사용해야합니다. – BACON

+0

Aah. 그 중 일부를 설명하지만 줄 바꿈은 여전히 ​​작동하지 않습니다. S 여기에 입력 한 코드가 있습니다. '$ searchText ='\ | '; $ replacementText = "'n't''t"; Get-Content C : \ arter \ final1.txt ' | ForEach-Object {$ _ -replace $ searchText, $ replacementText; }' | Out-File C : \ arter \ final2.txt; ' –

관련 문제