Lynxにファイル名のスペースを認識させる方法

Lynxにファイル名のスペースを認識させる方法

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);print}' > ~/Desktop/links.txt

コンテンツがUTF-8でエンコードされると、lynx脱出するテキスト(URLエンコードの元に戻す、例:%20)、この場合はスペースを表示します(名前のスペース数に応じて2つ以上のフィールドを指定します)。

Debian は脱出を終えた#398274、2013(つまり、Ubuntu 18.04にはすでにこの機能があります)。

次へ追加-listonlyオプションは、次のチェックのみを行うことで、不一致の数を減らします。リストURL。

複数のファイル形式を見つけるには、次のように正規表現にサフィックスを代わりにリストできます。

awk '/\.(pdf|odt|doc|docx)$/{ sub("^[ ]*[0-9]+.[ ]*","",$0);print}' > ~/Desktop/ link.txt

関連情報