Development Tip

배치 파일을 통해 txt 파일의 특정 줄 삭제

yourdevel 2020. 11. 10. 22:20
반응형

배치 파일을 통해 txt 파일의 특정 줄 삭제


생성 된 txt 파일이 있습니다. 이 파일에는 불필요하며 제거해야하는 특정 줄이 있습니다. 제거해야하는 각 줄에는 줄에 두 문자열 중 하나가 있습니다. "오류"또는 "참조". 이러한 토큰은 줄의 아무 곳에 나 나타날 수 있습니다. 다른 모든 줄을 유지하면서이 줄을 삭제하고 싶습니다.

따라서 txt 파일이 다음과 같은 경우 :

좋은 데이터 라인
C : \ Directory \ ERROR \ myFile.dll의 잘못된 줄
또 다른 좋은 데이터 라인
잘못된 줄 : REFERENCE 
좋은 라인

파일이 다음과 같이 끝나기를 바랍니다.

좋은 데이터 라인
또 다른 좋은 데이터 라인
좋은 라인

TIA.


다음을 사용하십시오.

type file.txt | findstr /v ERROR | findstr /v REFERENCE

이는 sed / awk / perl 등을 찾아서 설치하는 대신 Windows OS에서 표준 도구를 사용하는 이점이 있습니다.

작동중인 다음 기록을 참조하십시오.

C : \> file.txt 유형
좋은 데이터 라인
C : \ Directory \ ERROR \ myFile.dll의 잘못된 줄
또 다른 좋은 데이터 라인
잘못된 줄 : REFERENCE
좋은 라인

C : \> file.txt 유형 | findstr / v 오류 | findstr / v 참조
좋은 데이터 라인
또 다른 좋은 데이터 라인
좋은 라인

findstr 만 사용하여 @paxdiablo와 동일한 솔루션을 수행 할 수 있습니다. 여러 명령을 함께 파이프 할 필요가 없습니다.

findstr /V "ERROR REFERENCE" infile.txt > outfile.txt

작동 방식에 대한 세부 정보 :

  • / v 검색 문자열과 일치하지 않는 줄을 찾습니다 (@paxdiablo에서 사용하는 것과 동일한 스위치).
  • 검색 문자열이 따옴표로 묶인 경우 각 단어를 사용하여 OR 검색을 수행합니다 (구분자는 공백 임).
  • findstr은 입력 파일을받을 수 있으며 "type"명령을 사용하여 텍스트를 공급할 필요가 없습니다.
  • "> outfile.txt"는 결과를 콘솔에 인쇄하는 대신 outfile.txt 파일로 보냅니다. (존재하는 경우 파일을 덮어 씁니다. 추가하려면 ">> outfile.txt"를 대신 사용하십시오.)
  • / i 스위치를 추가하여 대 / 소문자를 구분하지 않는 일치를 수행 할 수도 있습니다.

sed 한 경우 :

sed -e '/ REFERENCE / d'-e '/ ERROR / d'[파일 이름]

여기서 FILENAME은 좋은 줄과 나쁜 줄이있는 텍스트 파일의 이름입니다.


Perl이 설치되어 있으면 perl -i -n -e"print unless m{(ERROR|REFERENCE)}"트릭을 수행해야합니다.

참고 URL : https://stackoverflow.com/questions/418916/delete-certain-lines-in-a-txt-file-via-a-batch-file

반응형