【发布时间】:2013-03-09 05:12:17
【问题描述】:
我有一个大型日志文件,其中包含以下行:
82.117.22.206 - - [08/Mar/2013:20:36:42 +0000] "GET /key/0/www.mysite.org.uk/ HTTP/1.0" 200 0 "-" "-"
我想从与上述模式匹配的每一行中仅提取 ip 82.117.22.206 后跟一个空格和其中的文本 www.mysite.org.uk。 ip 和 text 可以不同。因此,鉴于上述行,输出文件中的行将是:
82.117.22.206 www.mysite.org.uk
如何在 bash 中使用 grep 或其他命令使输出唯一,以使输出文件不包含两条相同的行?有人可以推荐我到一个开始学习更多关于这种 shell 脚本的好地方吗?
【问题讨论】:
-
ip 很简单:
cat log|awk '{print $1}'|sort|uniq。提取该主机名将更加困难。是不是 uri 总是/key/0/hostname_goes_here? -
@MarcB 总是在
/key/0/和另一个破折号/之间