![Powershell을 사용하여 텍스트 파일 정리](https://rvso.com/image/668805/Powershell%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%20%EC%A0%95%EB%A6%AC.png)
이 문제로 어려움을 겪고 누군가가 도움을 줄 수 있는지 궁금합니다. 제거하고 싶은 추가 데이터가 포함된 대용량 텍스트 파일이 있습니다. 다음은 입력 파일의 샘플입니다.
Text In Page - 1
S
Dept
l<m RKB)
"1915
slightly 234234
"sil dsf 56
"gr
gl
1920 100
1925 100
1930 100 Cls
"1935 100 Cl
Text In Page - 2
l<m RKB)
"1915
slightly
"sil
"gr
glauc
1920 100
1925 100
1930 100 Cls
"1935 100 Cl
다음을 제거하고 싶습니다.
- 빈 줄
- 줄 시작 부분에 "
- 문자 AZ, az로 시작하는 모든 줄
위의 예에서는 다음과 같이 남습니다.
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
답변1
나는 생각 중입니다:
(gc D:\test.txt) -replace '^"' | sls '\S' | sls -NotMatch '^[A-Za-z]' | sc out.txt
이는 다음을 수행합니다.
- 파일의 줄을 가져오고 첫 번째 문자가 따옴표이면 아무 것도 바꾸지 마십시오.
- "공백 아님"과 일치하는 행을 선택하십시오(즉, 빈 행은 필터링됩니다).
- A-Za-z로 시작하지 않는 줄을 선택하세요
- 결과를 out.txt에 씁니다.
파이프라인을 사용하여 체인을 연결하는 것과 변수를 반복해서 작업하는 것을 얼마나 좋아하는지에 따라 긴 버전을 작성하는 다양한 방법이 있지만 다음과 같이 수행됩니다.
$lines = Get-Content D:\test.txt
$lines = $lines -replace '^"'
$lines = $lines | Select-String '\S'
$lines = $lines | Select-String -NotMatch '^[A-Za-z]'
$lines | Set-Content out.txt