
我正在使用腳本來查找 url 上所有 .pdf 檔案的清單。但 lynx 似乎在檔案名稱中有空格問題。這是腳本:
lynx --dump http://www.somesite/here/ | awk '/http/{print $2} | grep pdf > ~/Desktop/links.txt
這將按預期工作,直到檔案名稱中出現帶有空格的 .pdf。 Lynx 似乎在空白處截斷了檔案名稱。有什麼辦法可以防止這種情況嗎?
答案1
awk(預設)使用空白作為欄位分隔符,lynx 將轉儲的 url 中的空白渲染為空白。按照我在錯誤報告中建議的方式解決這個問題:
lynx -listonly -dump http://www.somesite/here/ | lynx -listonly -dump http://www.somesite/here/ | \ awk '/\.pdf$/{ sub("^[ ]*[0-9]+.[ ]*","",$0);列印}' > ~/Desktop/links.txt
如果內容剛好是 UTF-8 編碼,lynx逃逸文字(撤銷 URL 編碼,例如%20
),在本例中顯示一個空格(為 awk 提供兩個或多個字段,取決於名稱中空格的數量)。
Debian 已完成轉義#398274,2013 年(即 Ubuntu 18.04 已具備該功能)。
添加-listonly
選項減少了錯誤匹配的數量,透過只查看清單網址。
如果您想要尋找多種文件類型,您可以在正規表示式中列出後綴作為替代項,例如,如下所示:
awk '/\.(pdf|odt|doc|docx)$/{ sub("^[ ]*[0-9]+.[ ]*","",$0);列印}' > ~/Desktop/links.txt