conf t

インフラエンジニアのメモ

URLからドメイン名だけを正規表現で抜き出す方法

URLからドメイン名だけ正規表現で抜き出す方法をご紹介します。
http://~もしくはhttps://~というURLからドメイン部のみを抜き出します。

サクラエディタ
Ctrl + Rの置換にて、以下を入力し実行する。
正規表現チェックボックスにチェックを入れるのを忘れないこと
置換前
(http|https)://([^/]+).*

置換後
\2

linux
sed -E 's/^.*(http|https):\/\/([^/]+).*/\2/g'

http:\/\/[^/]+

実行例1

サクラエディタでURLからドメイン名だけ取り出す。

置換前

http://aaaa.bbbb.com/hoge/fuga/
https://aaaa.bbbb.com/hoge/fuga/

置換後

aaaa.bbbb.com
aaaa.bbbb.com

実行例2

linuxでどこのドメインにどれだけアクセスしているかを集計する
例えばsquidaccess.logに以下を実行する。
cat access.log | sed -E 's/^.*(http|https):\/\/([^/]+).*/\2/g' | sort | uniq -c

上記の場合、http connectメソッドなどhttp://を含まないログは集計できません。
何を集計したいのか、その用途に合わせて適宜変更する必要があります。