awk 段落が機能しない

awk 段落が機能しない

KingBase Lite 2018 Update 3ファイルを以下からダウンロードしました。ここ。 「FIDE Candidates 2018」などの単一イベントからデータを抽出したいと思います。このテキストとその下の段落を含むすべての段落を取得したいので、各ゲームの完全なpgnがあります。

最初にテキストを含む段落を取得するにはこの提案

ただし、試してみると、awk -v RS='' -v ORS='\n\n' '/FIDE Candidates 2018/' KingBaseLite2018-03.pgnファイル全体のみが印刷されます。存在しない単語を検索すると、何も印刷されません。だから私はそれが正しく検索されていると仮定していますが、何らかの方法で新しい行を正しく切り取っていません。このファイルの改行文字は少しぎこちないかもしれません。上記のリンクの他の提案(Perlなど)を試しても同じ結果が得られます。

その段落を取得するには、今何をすべきですか?下に段落を追加するにはどうすればよいですか?

ベストアンサー1

ファイルをダウンロードして解凍しましたが、行末はCRLFなので、これを考慮する必要があります。次のツールを使用できます。fromdos、またはファイルを変更したくない場合は、Perlにそのファイルを使用するように指示できます。:crlf PerlIOレイヤー、これは環境変数を使用して以下で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

おすすめ記事