【发布时间】:2011-01-25 01:03:48
【问题描述】:
我想使用 shell 脚本将日志文件每一行的第一个字符“x”替换为数字“7”。日志文件示例:
216.129.119.x [01/Mar/2010:00:25:20 +0100] "GET /etc/....
74.131.77.x [01/Mar/2010:00:25:37 +0100] "GET /etc/....
222.168.17.x [01/Mar/2010:00:27:10 +0100] "GET /etc/....
我卑微的开始......
#!/bin/bash
echo Starting script...
cd /Users/me/logs/
gzip -d /Users/me/logs/access.log.gz
echo Files unzipped...
echo I'm totally lost here to process the log file and save it back to hd...
exit 0
为什么日志文件IP格式会这样?我的网络提供商 (1and1) 已决定不存储 IP 地址,因此他们将最后一个数字替换为字符“x”。他们告诉我这是“法律”的新要求。我个人认为这是 bs,但这会让我们偏离主题。
我想用 AWstats 处理这些日志文件,所以我需要一个没有格式错误的 IP 地址。我想将 x 替换为 7,如下所示:
216.129.119.7 [01/Mar/2010:00:25:20 +0100] "GET /etc/....
74.131.77.7 [01/Mar/2010:00:25:37 +0100] "GET /etc/....
222.168.17.7 [01/Mar/2010:00:27:10 +0100] "GET /etc/....
我知道并不完美,但至少我可以处理文件,我仍然可以获得很多有用的信息,如国家、访问者数量等。日志文件每个 200MB,所以我认为 shell 脚本是走的路,因为我可以在本地的 Macbook Pro 上快速做到这一点。不幸的是,我对 shell 脚本知之甚少,而且我的 javascript 技能这次也不会削减它。感谢您的帮助。
【问题讨论】:
标签: python perl bash string shell