web-dev-qa-db-ja.com

パターンが複数行であるかどうかに関係なく、PDFファイル内のパターンのページ番号のみを取得するにはどうすればよいですか?

PDFファイルで複数行パターンのページ番号を見つけるには PDFファイルとテキストファイルで複数行パターンをgrepするにはどうすればよいですか? および 検索するにはどうすればよいですか?) PDFファイル内の文字列、および文字列が表示される各ページの物理的なページ番号を見つけますか?

$ pdfgrep -Pn '(?s)image\s+?not\s+?available'  main_text.pdf 
49: image
   not
available
51: image
   not
available
53: image
   not
available
54: image
   not
available
55: image
   not
available

ページ番号のみを抽出したいのですが、パターンが複数行なので、

$ pdfgrep -Pn '(?s)image\s+?not\s+?available'  main_text.pdf | awk -F":" '{print $1}'
49
   not
available
51
   not
available
53
   not
available
54
   not
available
55
   not
available

の代わりに

49
51
53
54
55

パターンが複数行であるかどうかに関係なく、ページ番号のみを抽出するにはどうすればよいのでしょうか。ありがとう。

2
Tim

少しハッキーですが、すでにPerl互換のREを使用しているため、\K "keep left"修飾子を使用して、式のすべて(および次の行末まで)に一致させることができますが、出力:

pdfgrep -Pn '(?s)image\s+?not\s+?available.*?$\K'  main_text.pdf

ただし、出力には引き続き:セパレータが含まれます。

5
steeldriver

追加 $0~":"awkレコグナイザーとして。つまり、次の行が表示されます。

 .... | awk -F":" '$0~":"{print $1}'

これにより、入力行に「:」が含まれている場合にのみ印刷され、他の行は破棄されます。

1