2014-10-17 3 views
0

저는 powershell을 사용하여 불필요한 공백을 제거하고 그 결과를 추가 분석을 위해 작동중인 CSV로 변환 할 수 있도록 항목 사이에 쉼표 하나를 넣으려고합니다.powershell에서 여분의 공백을 제거하십시오.

여기 내 코드입니다.

Get-Content –path C:\Users\USERNAME\Desktop\results.txt| ForEach-Object {$_ -replace "\s+" " " } | Out-File -filepath C:\Users\USERNAME\Desktop\results.csv 

초기 resuts 내가이

항목, 항목처럼 보이게 완 이것이

entry  entry  entry (all separated with 5 spaces) 

, 항목처럼 텍스트에 파일

그래서 엑셀을 넣어 것입니다

별도의 셀에있는 것

감사합니다.

답변

2

가까이에 있지만 " " 대신 ","으로 교체해야했습니다. 텍스트 파일의 줄을 다음과 같이 가정합니다. 나는 당신이 거기에있을 선행/후행 공간을 의미하는 경우 알지는 못했지만 괜찮아.

" entry entry entry "

Get-Content –path C:\Users\USERNAME\Desktop\results.txt| ForEach-Object {$_.Trim() -replace "\s+" "," } | Out-File -filepath C:\Users\USERNAME\Desktop\results.csv -Encoding ascii 

$_.Trim() -replace "\s+" "," 사용 단지 경우에 CSV의 추가 값을 막기 위해 외부 공간을 제거하기 위해 트리밍.

질문을 오해 한 경우 알려주십시오.

+1

Out-File에 대한 경고 단어. 기본 인코딩은 유니 코드입니다. '((Get-Content 'entry.txt') -replace ('\ s {2,5}', ',')). Out-File -encoding ascii out.csv' – evilSnobu

+0

ASCII 인코딩을 원할 경우 ASCII의 기본 인코딩을 사용하는 세트 - 컨텐츠 용 Out-File을 교환 할 수 있습니다. – mjolinor

+0

@kamikatze 인코딩에 대해 알아두면 유용합니다. 이 경우 나는 OP가 가지고있는 것만 큼 잘하고 있었다. – Matt

1

trim 문자열의 시작 또는 끝 부분에서 문자를 제거 할 수 있습니다 (기본값 : 공백). here을 사용하십시오.

다른 방법으로이 작업을 수행 할 수 있습니다.이 작업을 정규식으로 바꾸려면 here을 사용하십시오.

관련 문제