Text-Processing
無論模式是否為多行,如何僅獲取 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
我想知道如何只提取頁碼,不管模式是否是多行的?謝謝。
這有點 hacky,但由於您已經在使用與 perl 兼容的 RE,您可以使用
\K
“keep left”修飾符來匹配表達式中的所有內容(以及直到下一行結束的任何其他內容),但將其從輸出中排除:pdfgrep -Pn '(?s)image\s+?not\s+?available.*?$\K' main_text.pdf
但是,輸出仍將包含
:
分隔符。
添加
$0~":"
為 awk 辨識器。即,你得到了這條線:.... | awk -F":" '$0~":"{print $1}'
這樣,只有當輸入行中有“:”時才會列印輸出,而其他行則被丟棄。