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