我从这里下载了 KingBase Lite 2018 Update 3 文件。我现在想从单个事件中提取数据,例如“FIDE Candidates 2018”:我想获取包含此文本及其下方段落的所有段落,因此我拥有每个游戏的完整 pgn。
为了首先获得包含文本的段落,我遵循了这些建议。
但是,当我尝试时awk -v RS='' -v ORS='\n\n' '/FIDE Candidates 2018/' KingBaseLite2018-03.pgn
,它只打印整个文件。当我搜索不存在的单词时,它不会打印任何内容。所以我假设它正确地进行了搜索,但不知何故它没有正确地切入新行。该文件中的换行符可能有些尴尬。当我尝试上述链接中的其他建议(例如使用 perl)时,我得到了相同的结果。
我现在该怎么做才能获得该段落?我怎样才能在下面包含一段呢?
我下载并解压缩了文件,行尾是 CRLF,所以你需要考虑到这一点,或者使用像 之类的工具
fromdos
,或者如果你不想修改文件,你可以告诉 Perl 你想要它用它的:crlf
PerlIO层做翻译,这就是我在下面用PERLIO
环境变量做的事情。(还有其他方法可以更改图层,但这种方法对于单行来说是最简单的。)我使用触发器运算符
...
仅提取与正则表达式匹配的段落加上匹配的下一个段落(因为文件中的所有段落都以or/^1\./
开头)。[
1.