awk 단락이 작동하지 않습니다

awk 단락이 작동하지 않습니다

KingBase Lite 2018 업데이트 3 파일을 다음에서 다운로드했습니다.여기. 이제 "FIDE Candidates 2018"과 같은 단일 이벤트에서 데이터를 추출하고 싶습니다. 이 텍스트와 그 아래 단락이 포함된 모든 단락을 가져오고 싶기 때문에 각 게임에 대한 전체 pgn이 있습니다.

먼저 텍스트가 포함된 단락을 얻으려면이 제안.

그러나 시도해 보면 awk -v RS='' -v ORS='\n\n' '/FIDE Candidates 2018/' KingBaseLite2018-03.pgn전체 파일만 인쇄됩니다. 존재하지 않는 단어를 검색하면 아무것도 인쇄되지 않습니다. 그래서 나는 그것이 검색을 올바르게 하고 있다고 가정하고 있지만, 어떻게든 새 줄을 올바르게 자르지 못하고 있습니다. 이 파일의 개행 문자는 약간 어색할 수 있습니다. 위 링크의 다른 제안(예: Perl 사용)을 시도해도 동일한 결과를 얻습니다.

해당 단락을 얻으려면 지금 무엇을 해야 합니까? 아래에 단락을 추가하려면 어떻게 해야 하나요?

답변1

파일을 다운로드하고 압축을 풀었는데 줄 끝이 CRLF이므로 이를 고려해야 합니다. 다음과 같은 도구를 사용할 수 있습니다.fromdos, 또는 파일을 수정하고 싶지 않다면 Perl에게 해당 파일을 사용하도록 지시할 수 있습니다.:crlf 펄IO레이어, 이것이 환경 변수를 사용하여 아래에서 PERLIO수행하는 작업 입니다. (레이어를 변경하는 다른 방법이 있지만 단일 행의 경우 이것이 가장 쉽습니다.)

나는 사용하고있다트리거 연산자...정규식과 일치하는 단락과 다음과 일치하는 단락만 추출합니다 /^1\./(파일의 모든 단락이 또는 로 시작하므로 [) 1..

wget http://kingbase-chess.net/download/650 -O KingBaseLite2018-03.zip
unzip KingBaseLite2018-03.zip
PERLIO=:crlf perl -00ne 'print if /"FIDE Candidates 2018"/.../^1\./' KingBaseLite2018-03.pgn

관련 정보