ここでは多くの答えを見ましたが、(主に)HTMLファイルについてです。私の場合、HTMLファイルがなく、抽出したいランダムなデータとURLを含む2GBのファイルしかありませんが、URLには出力に表示したくないランダムなデータ/テキストが混在しています。
例は次のとおりです。
https://example.com/";}i:41067;a:10:{s:3
ベストアンサー1
~によるとhttps://stackoverflow.com/a/7109208/1745001URLの有効な文字は次のとおりです。
AZ, az, 0-9, -, ., _, ~, :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,,;, %と=
したがって、これが真であると仮定すると、次のことを試すことができます。
grep -o -E "https?://[][[:alnum:]._~:/?#@!$&'()*+,;%=-]+" file
これらの文字の一部は、特定のコンテキストにのみ存在できるため、まだ100%正確ではないかもしれませんが、おそらく単純なgrep / regexpを使用して実行するのが最善です。
grepがこれをサポートしている場合は、いくつかの追加の制約のために\<
tの前に単語の境界を追加してください(例:GNU grepなど)http
。