PowerShellでキャッシュレス・消費者還元事業事務局審査を通過した加盟店一覧をワンライナーでTSV変換

qiita.com

PowerShellワンライナーでできるか試してみた

PDFBOXだと改行されないので2行の処理がいらないのでpdftotextより簡単

標準出力がShift-JISなのでsjisにすると

java -jar pdfbox-app-2.0.17.jar ExtractText -startPage 3 -sort -console -encoding sjis | Select-String -Pattern "(^\d{1,3}(,\d{3})?)\s(\S{2,3}(都|道|府|県))\s+(\S{1,7}(市|区|町|村))\s+(.+)\s+(\S+)\s+(\S+)\s+([2|5]%)$" | ForEach-Object { $data = @(); foreach ( $i in @(1, 3, 5, 7, 8, 9, 10)) { $data += ($_.Matches.Groups[$i].value) }; $data -join "`t" } | Out-File -Encoding UTF8 .\output.tsv

かなりの数文字化けが発生

ロケールUTF-8に変更

imabari.hateblo.jp

java -jar pdfbox-app-2.0.17.jar ExtractText -startPage 3 -sort -console kameiten_touroku_list.pdf | Select-String -Pattern "(^\d{1,3}(,\d{3})?)\s(\S{2,3}(都|道|府|県))\s+(\S{1,7}(市|区|町|村))\s+(.+)\s+(\S+)\s+(\S+)\s+([2|5]%)$" | ForEach-Object { $data = @(); foreach ( $i in @(1, 3, 5, 7, 8, 9, 10)) { $data += ($_.Matches.Groups[$i].value) }; $data -join "`t" } | Out-File -Encoding UTF8 .\output.tsv
java -jar pdfbox-app-2.0.17.jar ExtractText -startPage 3 -sort -console kameiten_touroku_list.pdf | Select-String -Pattern "(^\d{1,3}(,\d{3})?)\s(\S{2,3}(都|道|府|県))\s+(\S{1,7}(市|区|町|村))\s+(.+)\s+(\S+)\s+(\S+)\s+([2|5]%)$" | ForEach-Object { @($_.Matches.Groups[1, 3, 5, 7, 8, 9, 10].Value) -join "`t" } | Out-File .\output.tsv