문제 설명
.bib
여러 개의 작은 파일로 분할하고 싶은 큰 파일이 있습니다 .bib
.
@book
이를 위해 원본 .bib
파일에서 모든 항목을 추출하여 새 파일에 저장할 수 있는 파서를 찾고 있습니다 . 항목 자체는 기본적으로 그대로 유지되어야 합니다.
만약에 도움이 된다면: 저는 biblatex
& biber
(Debian GNU/Linux에서)를 사용하고 있습니다. IIRC는 여기서 기꺼이 채택할 몇 가지 구문 분석 기능을 제공합니다.
답변1
이는 Biber의 도구 모드를 사용하면 가능합니다. 불행하게도 2.11 이전 버전에서는 필요한 정확한 기능에 작은 문제가 있었습니다. 문제가 보고되었습니다(https://github.com/plk/biber/issues/212) Biber 2.11에서 해결되었습니다.
onlybooks.conf
내용으로 만들기
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_align>true</output_align>
<output_fieldcase>lower</output_fieldcase>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map>
<per_nottype>book</per_nottype>
<map_step map_entry_null="1" />
</map>
</maps>
</sourcemap>
</config>
그런 다음 Biber에 전화하십시오.
biber --tool --configfile=onlybooks.conf <yourfile>.bib
의 항목 <yourfile>_bibertool.bib
만 포함하는 이라는 파일이 표시되어야 합니다 .@book
<yourfile>.bib
물론 Biber가 데이터 모델에 알려지지 않은 필드를 삭제한다는 주의 사항은 여기에도 적용됩니다.`biber --tool`이 .bib 파일에서 비표준 필드를 제거하지 못하도록 방지.
bib2bib
또는 다음 을 사용할 수 있습니다.bibtex2html
. 자세한 내용은 다음에서 확인할 수 있습니다.PDF 문서.
사용
bib2bib -c '$type = "BOOK"' -ob onlybooks.bib <yourfile.bib>
의 @book
항목 만 얻으려면 .<yourfile>.bib
onlybooks.bib
유형은 항상 모두 대문자여야 하며 따옴표로 묶어야 합니다. Windows OS에서는 바깥쪽 따옴표가 double이어야 하고 안쪽은 double이어야 합니다 -c "$type = 'BOOK'"
. 반면 Unix에서는 그 반대여야 합니다.-c '$type = "BOOK"'
당신은 또한 사용할 수 있습니다bibtool
:
bibtool --select{@book} all.bib -o some.bib
~ @book
의 항목 만 씁니다 .all.bib
some.bib
JabRef와 같은 일부 참고문헌 관리자는 파일 필터링 기능도 제공하는데 .bib
, 여기에서도 사용할 수 있습니다.