鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

pdfgrepの内容をperlワンライナーでtable化する

pdfgrepで検索すると、文字列がヒットした行は、「ファイル名:本文」
その周辺行は「ファイル名-本文」と表示されるようだった。

  • Cオプションで周辺行の行数を指定できる。

正規表現でファイル名部分と、本文部分をグループで分けて、ファイル名部分(グループ1)が変わったタイミングでファイル名の列部分をグループ1から出力するようにした。
本文の列はグループ2から出力するようにしました。

pdfgrep --cache -m 1  -C 3 増配 *.pdf 2> /dev/null | perl -nle 'BEGIN{$f="";print "<table border=1>";} {if ($_ =~ /(.*?)\.pdf[:-](.*)/) { if ($f != $1){ if ($f != ""){print "</td></tr>"} print "<tr><td>" . $1 . "</td><td>"; $f=$1;} print $2;  } }' > result.html