labunix's blog

labunixのラボUnix

pdftotext/pdfgrepでPDFの内容を検索する

■pdftotext/pdfgrepでPDFの内容を検索する
 AWS関連の情報で保存した方が良さそうなものを集めていたら、
 PDFファイルが54にもなった。
 まだまだ増えそうなので、検索方法を考える。

$ lsb_release -d
Description:	Debian GNU/Linux 9.5 (stretch)

$ ls *.pdf | wc -l
54

■まずは必要なツールをインストール

$ apt-file search bin/pdftotext
poppler-utils: /usr/bin/pdftotext

$ apt-file search bin/pdfgrep
pdfgrep: /usr/bin/pdfgrep

$ sudo apt-get install -y poppler-utils pdfgrep

■PDFファイル名だけで最大79文字あるので、
 ファイル名を出力したら改行するものとする。

$ ls *.pdf | awk '{print "echo \042"$0"\042 | wc -c"}' | sh | awk 'BEGIN{max=0}{if(max<$0){max=$0}}END{print max}'
79

■見出しを集める。
 pdftotextでPDFtext形式にする際にファイルではなく標準出力に出力する方法
 見出しなので、3行位あればなんとかなる想定。

$ ls *.pdf | \
    awk '{print "echo \042###"$0"\042;pdftotext \042"$0"\042 - | head -n 3"}' | sh | \
    awk '{if($0 ~ /###/){printf "\n%s\n",$0}else{printf "%s,",$0}}END{print "\n"}'
###0awsbasicprepare20120629-120726021027-phpapp02.pdf
AWS Basic トレーニング,~事前準備編~,2012629日,
###1awsbasicsignup20120629-120726021013-phpapp01.pdf
AWS Basic トレーニング,~0.アカウント作成編~,2012629日,
###20120319aws-meister-reloaded-s3-120613233326-phpapp01.pdf
AWSマイスターシリーズ,Reloaded,Amazon S3,
###20120625_AWS-Meister-Reloaded-SG-VMIE-public.pdf
AWS Storage Gateway,&,VM Import/Export,
###20130313aws-meister-regenerate-ec2public-130317204207-phpapp01.pdf
AWSマイスターシリーズ,Amazon Elastic Compute Cloud,(Amazon EC2),
###20140129_AWS-Meister-Reloaded-ephemeral-ebs-public.pdf
re:G,ene,rate,
###20150701_AWS-BlackBelt-runcodeinthecloud.pdf
Run Code in The Cloud,AWS Lambda 概要,,
###20151216aws-blackbelt-spotandautoscaling-151216103113.pdf
Amazon EC2,スポットインスタンス,Auto Scaling,
###20160302_AWS-BlackBelt-Lambda-update.pdf
AWS Lambda Updates,Keisuke Nishitani (@Keisuke69),Amazon Web Services Japan K.K.,
###20160420_AWS-Blackbelt-EC2-Windows.pdf
Amazon EC2 - Windows,AWS Black Belt Online Seminar 2016,アマゾン ウェブ サービス ジャパン株式会社,
###20160803-aws-blackbelt-vpc-160803104129.pdf
Amazon  Virtual  Private  Cloud  (VPC),AWS  Black  Belt  Online  Seminar  2016  ,,
###20161012_AWS-BlackBelt-ELBUpdate.pdf
【AWS Black Belt Online Seminar】,Elastic Load Balancing (ELB),アマゾン ウェブ サービス ジャパン株式会社,
###20161109_AWS-BlackBelt-EC2Spot.pdf
【AWS Black Belt Online Seminar】,Amazon EC2 スポットインスタンス,アマゾン ウェブ サービス ジャパン株式会社,
###20161122_AWS-BlackBelt-HPConAWS.pdf
【AWS Black Belt Online Seminar】,HPC分野でのAWS活用,アマゾンウェブサービスジャパン株式会社,
###20170111_AWS-Blackbelt-Elastic-Beanstalk.pdf
【AWS Black Belt Online Seminar】,,AWS Elastic Beanstalk,
###20170118_AWS-Blackbelt-Lightsail-public02.pdf
【AWS Black Belt Online Seminar】,,https://amazonlightsail.com/,
###20170208_AWS-BlackBelt-AWSbatch.pdf
【AWS Black Belt Online Seminar】,,AWS Batch,
###20170315_AWS-BlackBelt-AutoScaling.pdf
Auto Scaling,AWS Black Belt Online Seminar 2017,アマゾン ウェブ サービス ジャパン株式会社,
###20170621_AWS-BlackBelt-ads-sms.pdf
【AWS Black Belt Online Seminar】,Server Migration Service &,Application Discovery Service,
###20170719_AWS_BlackBelt_Lambda_demo.pdf
AWS Lambda,,Keisuke Nishitani (@Keisuke69),
###20171110_AWS-BlackBelt_RI_update.pdf
【AWS Black Belt Online Seminar】,,AWS のコスト最適化/リザーブドインスタンス,
###20180124aws-blackbelt-security-other-recap-180124095800.pdf
【AWS Black Belt Online Seminar】,,re:Invent Recap: Security and Other,
###20180220_Amazoncontainerservices-blackbelt-180220131635.pdf
【AWS Black Belt Online Seminar】,Amazon Container Services,Ryosuke Iwanaga, Solutions Architect,
###20180221_AWS_Lambda_at_Edge_Black_belt.pdf
【AWS Black Belt Online Seminar】,AWS Lambda@Edge,アマゾンウェブサービスジャパン株式会社,
###20180411_AWS-BlackBelt_EC2.pdf
【AWS Black Belt Online Seminar】,,Amazon EC2,
###20180723_AWS-BlackBelt-SystemsManager.pdf
【AWS Black Belt Online Seminar】,,
                                   •,
###20180724_Fargate_and_EKS.pdf
【AWS Black Belt Online Seminar】,,Introduction to AWS Fargate and,
###20180731_AWS_BlackBelt_S3_usecase_updates_public.pdf
【AWS Black Belt Online Seminar】,S3ユースケース及びサービスアップデート,アマゾン ウェブ サービス ジャパン株式会社,
###20180801_AWS-Blackbelt_QuickSight-update_public.pdf
AWS Black Belt Online Seminar,Amazon QuickSight,,
###20180807_AWS-BlackBelt-Well-Architected.pdf
【AWS Black Belt Online Seminar】,AWS Well-Architected Framework,,
###AWS Certified Developer - Associate_2018_June_Exam_Guide_JP.pdf
AWS 認定デベロッパー – アソシエイト(DVA-C01) 試験ガイド,,はじめに,
###AWS Certified Solutions Architect - Associate_Exam Guide_v1.5_FINALJP.pdf
AWS 認定ソリューションアーキテクト - アソシエイト (新版),SAA-C01 試験ガイド,,
###AWS Certified Solutions Architect - Associate_Exam Sample_v1.5_FINALJP.pdf
AWS 認定ソリューションアーキテクト - アソシエイト (20182 月開始),SAA-C01 サンプル試験,Q1.,
###AWS Certified SysOps - Associate_Exam Guide_FINALJP.pdf
AWS 認定 SysOps アドミニストレーター,- アソシエイトレベル試験要覧,,
###AWS Certified SysOps - Associate_Exam Sample_v1_FINALJP.pdf
アマゾン ウェブ サービス – AWS 認定システムオペレーションアドミニストレーター – アソシエイトレベル試験サンプル,Q1. Amazon RDS の操作において、AWS が責任を持って実施する管理関連タスクは次のうちどれですか?2 つ選択し,てください。,
###AWS Certified_Developer_associate_examsample_JP.pdf
アマゾン ウェブ サービス – AWS 認定 デベロッパー– アソシエイトレベルサンプル試験,Q1. 次の文のうち、SQS について正しく述べているものはどれですか?,A.,
###AWS Storage Services Whitepaper-v9.pdf
AWS Storage Services,Overview,A Look at Storage Services Offered by AWS,
###AWS-HPC-Lens.pdf
High-Performance Computing,Lens,AWS Well-Architected Framework,
###AWS-RatesSystem-JP_201310.pdf
AWSの課⾦体系,2013年10⽉,,
###AWS-Serverless-Applications-Lens.pdf
Serverless Applications Lens,AWS Well-Architected Framework,,
###AWS_Certified_Solutions Architect_Associate_Feb_2018_Sample Questions_v1.0.pdf
AWS Solutions Architect – Associate (Released February 2018) (SAA-C01),Sample Exam Questions,1) A company is storing an access key (access key ID and secret access key) in a text file on a custom,
###AWS_Certified_Solutions_Architect_Associate_Feb_2018_ Exam_Guide_v1.5.2.pdf
AWS Certified Solutions Architect –,Associate (Released February 2018) SAA-C01 Exam Guide,,
###AWS_Cloud_Best_Practices.pdf
Architecting for the Cloud,AWS Best Practices,,
###AWS_Risk_and_Compliance_Whitepaper.pdf
Amazon Web Services: Risk and,Compliance,,
###AWS_Security_Whitepaper.pdf
Amazon Web Services:,Overview of Security,Processes,
###AWS_Simple_Monthly_Calculator_Guide_jp_20150424.pdf
AWS Simple Monthly Calculator,(簡易見積ツール),解説資料,
###AWS_certified_solutions_architect_associate_examsample.pdf
AWS Certified Solutions Architect – Associate Level,Sample Exam Questions,,
###BestPracticesInEvaluatingELB-ja-final.pdf
Elastic Load Balancing(ELB)を評価するためのベストプラクティス,本ドキュメントはアマゾン ウェブ サービス(以下、AWS)の Elastic Load Balancing(エラ,スティック ロード バランシング、以下 ELB)サービスの機能やアーキテクチャについて説,
###Best_Practices_for_Deploying_Amazon_WorkSpaces.pdf
Amazon WorkSpaces をデプロイ,するためのベストプラクティス,ネットワークアクセス、ディレクトリサービス、セキュリティ,
###Well-Architected_Whitepaper_v2_JP.pdf
AWS による優れた設計の,フレームワーク,2016,
###aws-overview.pdf
Overview of,Amazon Web Services,,
###awsbasic20120629-120726021001-phpapp02.pdf
AWS Basic トレーニング,,201283日,
###building_3tier_on_vpc_ver9.2_ja.pdf
AWS体験ハンズオン,  〜~セキュア&スケーラブルウェブサービス構築〜~,,
###crs-spl.pdf
AWS Cloud Roadshow 2016,セルフペースラボ ハンズオン,第 112:00 - 13:40,

■見出しを集めているうちに、検索キーワードになりそうな、例えば「AWS Basic トレーニング」で検索する。

$ pdfgrep -Hn --color auto 'AWS Basic トレーニング' *.pdf | awk '/:1:/'
0awsbasicprepare20120629-120726021027-phpapp02.pdf:1:AWS Basic トレーニング
1awsbasicsignup20120629-120726021013-phpapp01.pdf:1:AWS Basic トレーニング
awsbasic20120629-120726021001-phpapp02.pdf:1:AWS Basic トレーニング

■テキストに変換して検索する。
 毎回およそ207MBあって、これからも増えるかも知れないPDFファイルを
 毎回検索するのは非効率。「.txt」がなければPDFからテキストに変換する。

$ du *.pdf | awk 'BEGIN{sum=0}{sum+=$1}END{print sum/1024"MB"}'
207.441MB

$ ls *.pdf | awk '{gsub(".pdf","",$0);print "test -f \042"$0".txt\042 || pdftotext \042"$0".pdf\042 \042"$0".txt\042"}' | sh

$ awk '/AWS Basic トレーニング/{a[FILENAME]+=1}END{for(n in a){print a[n],n}}' *.txt
7 awsbasic20120629-120726021001-phpapp02.txt
1 0awsbasicprepare20120629-120726021027-phpapp02.txt
1 1awsbasicsignup20120629-120726021013-phpapp01.txt

$ head -3 *.txt | awk '{if($0 ~ /==/){printf "\n%s\n",$0}else{printf "%s,",$0}}END{print "\n"}'

==> 0awsbasicprepare20120629-120726021027-phpapp02.txt <==
AWS Basic トレーニング,~事前準備編~,2012629日,,
==> 1awsbasicsignup20120629-120726021013-phpapp01.txt <==
AWS Basic トレーニング,~0.アカウント作成編~,2012629日,,
==> 20120319aws-meister-reloaded-s3-120613233326-phpapp01.txt <==
AWSマイスターシリーズ,Reloaded,Amazon S3,,
==> 20120625_AWS-Meister-Reloaded-SG-VMIE-public.txt <==
AWS Storage Gateway,&,VM Import/Export,,
==> 20130313aws-meister-regenerate-ec2public-130317204207-phpapp01.txt <==
AWSマイスターシリーズ,Amazon Elastic Compute Cloud,(Amazon EC2),,
==> 20140129_AWS-Meister-Reloaded-ephemeral-ebs-public.txt <==
re:G,ene,rate,,
==> 20150701_AWS-BlackBelt-runcodeinthecloud.txt <==
Run Code in The Cloud,AWS Lambda 概要,,,
==> 20151216aws-blackbelt-spotandautoscaling-151216103113.txt <==
Amazon EC2,スポットインスタンス,Auto Scaling,,
==> 20160302_AWS-BlackBelt-Lambda-update.txt <==
AWS Lambda Updates,Keisuke Nishitani (@Keisuke69),Amazon Web Services Japan K.K.,,
==> 20160420_AWS-Blackbelt-EC2-Windows.txt <==
Amazon EC2 - Windows,AWS Black Belt Online Seminar 2016,アマゾン ウェブ サービス ジャパン株式会社,,
==> 20160803-aws-blackbelt-vpc-160803104129.txt <==
Amazon  Virtual  Private  Cloud  (VPC),AWS  Black  Belt  Online  Seminar  2016  ,,,
==> 20161012_AWS-BlackBelt-ELBUpdate.txt <==
【AWS Black Belt Online Seminar】,Elastic Load Balancing (ELB),アマゾン ウェブ サービス ジャパン株式会社,,
==> 20161109_AWS-BlackBelt-EC2Spot.txt <==
【AWS Black Belt Online Seminar】,Amazon EC2 スポットインスタンス,アマゾン ウェブ サービス ジャパン株式会社,,
==> 20161122_AWS-BlackBelt-HPConAWS.txt <==
【AWS Black Belt Online Seminar】,HPC分野でのAWS活用,アマゾンウェブサービスジャパン株式会社,,
==> 20170111_AWS-Blackbelt-Elastic-Beanstalk.txt <==
【AWS Black Belt Online Seminar】,,AWS Elastic Beanstalk,,
==> 20170118_AWS-Blackbelt-Lightsail-public02.txt <==
【AWS Black Belt Online Seminar】,,https://amazonlightsail.com/,,
==> 20170208_AWS-BlackBelt-AWSbatch.txt <==
【AWS Black Belt Online Seminar】,,AWS Batch,,
==> 20170315_AWS-BlackBelt-AutoScaling.txt <==
Auto Scaling,AWS Black Belt Online Seminar 2017,アマゾン ウェブ サービス ジャパン株式会社,,
==> 20170621_AWS-BlackBelt-ads-sms.txt <==
【AWS Black Belt Online Seminar】,Server Migration Service &,Application Discovery Service,,
==> 20170719_AWS_BlackBelt_Lambda_demo.txt <==
AWS Lambda,,Keisuke Nishitani (@Keisuke69),,
==> 20171110_AWS-BlackBelt_RI_update.txt <==
【AWS Black Belt Online Seminar】,,AWS のコスト最適化/リザーブドインスタンス,,
==> 20180124aws-blackbelt-security-other-recap-180124095800.txt <==
【AWS Black Belt Online Seminar】,,re:Invent Recap: Security and Other,,
==> 20180220_Amazoncontainerservices-blackbelt-180220131635.txt <==
【AWS Black Belt Online Seminar】,Amazon Container Services,Ryosuke Iwanaga, Solutions Architect,,
==> 20180221_AWS_Lambda_at_Edge_Black_belt.txt <==
【AWS Black Belt Online Seminar】,AWS Lambda@Edge,アマゾンウェブサービスジャパン株式会社,,
==> 20180411_AWS-BlackBelt_EC2.txt <==
【AWS Black Belt Online Seminar】,,Amazon EC2,,
==> 20180723_AWS-BlackBelt-SystemsManager.txt <==
【AWS Black Belt Online Seminar】,,
                                   •,,
==> 20180724_Fargate_and_EKS.txt <==
【AWS Black Belt Online Seminar】,,Introduction to AWS Fargate and,,
==> 20180731_AWS_BlackBelt_S3_usecase_updates_public.txt <==
【AWS Black Belt Online Seminar】,S3ユースケース及びサービスアップデート,アマゾン ウェブ サービス ジャパン株式会社,,
==> 20180801_AWS-Blackbelt_QuickSight-update_public.txt <==
AWS Black Belt Online Seminar,Amazon QuickSight,,,
==> 20180807_AWS-BlackBelt-Well-Architected.txt <==
【AWS Black Belt Online Seminar】,AWS Well-Architected Framework,,,
==> AWS Certified Developer - Associate_2018_June_Exam_Guide_JP.txt <==
AWS 認定デベロッパー – アソシエイト(DVA-C01) 試験ガイド,,はじめに,,
==> AWS Certified Solutions Architect - Associate_Exam Guide_v1.5_FINALJP.txt <==
AWS 認定ソリューションアーキテクト - アソシエイト (新版),SAA-C01 試験ガイド,,,
==> AWS Certified Solutions Architect - Associate_Exam Sample_v1.5_FINALJP.txt <==
AWS 認定ソリューションアーキテクト - アソシエイト (20182 月開始),SAA-C01 サンプル試験,Q1.,,
==> AWS Certified SysOps - Associate_Exam Guide_FINALJP.txt <==
AWS 認定 SysOps アドミニストレーター,- アソシエイトレベル試験要覧,,,
==> AWS Certified SysOps - Associate_Exam Sample_v1_FINALJP.txt <==
アマゾン ウェブ サービス – AWS 認定システムオペレーションアドミニストレーター – アソシエイトレベル試験サンプル,Q1. Amazon RDS の操作において、AWS が責任を持って実施する管理関連タスクは次のうちどれですか?2 つ選択し,てください。,,
==> AWS Certified_Developer_associate_examsample_JP.txt <==
アマゾン ウェブ サービス – AWS 認定 デベロッパー– アソシエイトレベルサンプル試験,Q1. 次の文のうち、SQS について正しく述べているものはどれですか?,A.,,
==> AWS Storage Services Whitepaper-v9.txt <==
AWS Storage Services,Overview,A Look at Storage Services Offered by AWS,,
==> AWS-HPC-Lens.txt <==
High-Performance Computing,Lens,AWS Well-Architected Framework,,
==> AWS-RatesSystem-JP_201310.txt <==
AWSの課⾦体系,2013年10⽉,,,
==> AWS-Serverless-Applications-Lens.txt <==
Serverless Applications Lens,AWS Well-Architected Framework,,,
==> AWS_Certified_Solutions Architect_Associate_Feb_2018_Sample Questions_v1.0.txt <==
AWS Solutions Architect – Associate (Released February 2018) (SAA-C01),Sample Exam Questions,1) A company is storing an access key (access key ID and secret access key) in a text file on a custom,,
==> AWS_Certified_Solutions_Architect_Associate_Feb_2018_ Exam_Guide_v1.5.2.txt <==
AWS Certified Solutions Architect –,Associate (Released February 2018) SAA-C01 Exam Guide,,,
==> AWS_Cloud_Best_Practices.txt <==
Architecting for the Cloud,AWS Best Practices,,,
==> AWS_Risk_and_Compliance_Whitepaper.txt <==
Amazon Web Services: Risk and,Compliance,,,
==> AWS_Security_Whitepaper.txt <==
Amazon Web Services:,Overview of Security,Processes,,
==> AWS_Simple_Monthly_Calculator_Guide_jp_20150424.txt <==
AWS Simple Monthly Calculator,(簡易見積ツール),解説資料,,
==> AWS_certified_solutions_architect_associate_examsample.txt <==
AWS Certified Solutions Architect – Associate Level,Sample Exam Questions,,,
==> BestPracticesInEvaluatingELB-ja-final.txt <==
Elastic Load Balancing(ELB)を評価するためのベストプラクティス,本ドキュメントはアマゾン ウェブ サービス(以下、AWS)の Elastic Load Balancing(エラ,スティック ロード バランシング、以下 ELB)サービスの機能やアーキテクチャについて説,,
==> Best_Practices_for_Deploying_Amazon_WorkSpaces.txt <==
Amazon WorkSpaces をデプロイ,するためのベストプラクティス,ネットワークアクセス、ディレクトリサービス、セキュリティ,,
==> Well-Architected_Whitepaper_v2_JP.txt <==
AWS による優れた設計の,フレームワーク,2016,,
==> aws-overview.txt <==
Overview of,Amazon Web Services,,,
==> awsbasic20120629-120726021001-phpapp02.txt <==
AWS Basic トレーニング,,201283日,,
==> building_3tier_on_vpc_ver9.2_ja.txt <==
AWS体験ハンズオン,  〜~セキュア&スケーラブルウェブサービス構築〜~,,,
==> crs-spl.txt <==
AWS Cloud Roadshow 2016,セルフペースラボ ハンズオン,第 112:00 - 13:40,