これは私が分析したい大規模なaccess.logファイルの一部です。
4.3.2.1 - - [22/Sep/2016:14:27:18 -0500] "GET / HTTP/1.0" 301 184 "-" "WordPress/4.5.4; http://my.example.com; verifying pingback from 127.0.0.1"-
4.3.2.1 - - [22/Sep/2016:14:27:18 -0500] "GET / HTTP/1.0" 301 184 "-" "WordPress/4.5.4; http://my.example.com; verifying pingback from 127.0.0.1"
3.2.1.4 - - [22/Sep/2016:14:27:18 -0500] "GET / HTTP/1.0" 301 184 "-" "WordPress/4.5; http://somedomain.com; verifying pingback from 1.2.3.4"-
3.2.1.4 - - [22/Sep/2016:14:27:18 -0500] "GET / HTTP/1.0" 301 184 "-" "WordPress/4.5; http://somedomain.com; verifying pingback from 1.2.3.4"
5.4.3.2 - - [22/Sep/2016:14:27:18 -0500] "GET / HTTP/1.0" 301 184 "-" "WordPress/4.4.2; http://demo.otherdomain.com/blog; verifying pingback from 1.2.3.4"
ファイルから一意のドメインを抽出する方法を知りたいです。結果は次のとおりです。
http://my.example.com
http://somedomain.com;
http://demo.otherdomain.com/blog;
ベストアンサー1
この場合、私はPerlのgrepを周りを見回すのが大好きです。
grep -oP '(?<=http://).*(?=;)' access.log | sort -u
以下の例を使用してリストを返します。
$ grep -oP '(?<=http://).*(?=;)' access.log | sort -u
demo.otherdomain.com/blog
my.example.com
somedomain.com