178.139.20.52 - - [26/Nov/2011:08:21:13 +0000] "POST /test/LinkTest.cgi?e=PATTERN&t3=0:010015&t4=1322295671:587875&l=178.139.20.174&n=149 HTTP/1.1" 200 17 "-" "BOT/1.26"

上面是我要解析的日志条目的类型。

我喜欢我的命令输出:
178.139.20.52 PATTERN

关于如何实现这一点的任何想法?

谢谢。

谢谢您的回答,我将这样做:
cat access_log | grep "LinkTest.cgi" | grep "26\/Nov\/2011" | awk -v FS="[ =&]" '{ print $1,$8 }' | sort -u

最佳答案

使用awk:

“infile”的内容

178.139.20.52 - - [26/Nov/2011:08:21:13 +0000] "POST /test/LinkTest.cgi?e=PATTERN&t3=0:010015&t4=1322295671:587875&l=178.139.20.174&n=149 HTTP/1.1" 200 17 "-" "BOT/1.26"

我的Linux机器中的Awk命令:
awk 'BEGIN { FS = "=" } { ip = substr( $1, 0, index( $1, " " ) - 1 ); pattern = substr( $2, 0, index( $2, "&" ) - 1 ); printf "%s %s\n", ip, pattern }' infile

结果:
178.139.20.52 PATTERN

10-08 12:35