9

たとえば、img URLを含む巨大なHTMLファイルがあります:http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg

このURLがファイル全体の唯一のURLであると仮定して、このURLを取得したいと思います。

cat file.html | grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z.-]*/[a-zA-Z.,-]*'

これは、URLにプラス記号がない場合にのみ機能します。

+記号でも機能させるにはどうすればよいですか?

4

2 に答える 2

8

You missed the character class 0-9 (also useless use of cat):

grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9+-]*/[a-zA-Z0-9.,-+]*' file.html

Slight improvement, use -i for case insensitivity and only match images .jpg or .jpeg.

grep -io 'http://ex[a-z.-]*/[a-z0-9+-]*/[a-z0-9.,-+]*[.jpe?g]' file.html

Or how about just:

grep -io 'http://ex.example.*[.jpe?g]' file.html
于 2012-11-28T18:38:36.060 に答える
2

以下は、この特定のケース(数字とプラス記号を含む)の正規表現 を修正します。

http://ex[a-zA-Z.-]*/[a-zA-Z0-9.+-]*/[a-zA-Z0-9.+-]*

デモンストレーション:

echo "For example, I have a huge HTML file that contains img URL: http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg"

このURLがファイル全体の唯一のURLであると仮定して、このURLを取得したいと思います。

cat file.html | grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z.-]*/[a-zA-Z.,-]*'

これは、URLにプラス記号がない場合にのみ機能します。+記号でも機能させるにはどうすればよいですか?

cat file.html| grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9.+-]*/[a-zA-Z0-9.+-]*'

出力:

http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg

これにより、すべての有効なURLが抽出されるわけではありません。このサイトには、URLマッチングに関する他の回答がたくさんあります。

于 2012-11-28T18:48:59.033 に答える