我有一个要解析的日志文件
我只需要前两个字段(用空格分隔)
日志文件中的采样行:
1362960460.697 19 27.197.12.76 TCP_MISS/404 339 GET http://what-ever-server.com/what-ever-file - DIRECT/22.22.22.22 text/html第一个字段应该不带".“后面的数字。
我想我可以用C语言来做这件事,但是有一个指针来跟踪每个字符来检查它是空格还是“,这就太复杂了。所以我在这里的一些文章中看到grep可以完成这项工作,但是我的文件中的字段没有固定的长度
我应该用C语言做吗?还是在grep中有一个选项可以让我解析
提前感谢
发布于 2013-03-23 18:55:15
这就是awk的用途。
cat logfile | awk '{print $1 " " $2}' | sed 's_\.[0-9]*__g'使用awk打印每行的第一个和第二个字段。然后匹配小数位并使用sed删除它们。
发布于 2013-03-23 18:58:16
要获取文件的前两个字段,请使用awk (包含在所有unix或linux发行版中)
awk '{split($1,a,"."); print a[1], $2}' logfile解释:
split函数根据分隔符将第一个标记($1)拆分为数组a .print a[1], $2根据输出字段分隔符(缺省情况下为空格)打印这两个值
更简单的方法(假设第一个字段是一个数字)是使用int函数:
awk '{print int($1), $2}' logfile发布于 2013-03-23 21:20:34
$ cat file
1362960460.697 19 27.197.12.76 TCP_MISS/404 339 GET http://what-ever-server.com/what-ever-file - DIR
ECT/22.22.22.22 text/html
$ awk -F'[ .]' '{print $1,$3}' file
1362960460 19
$ sed 's/\([^.]\)\.[^ ]* \([^ ]*\).*/\1 \2/' file
1362960460 19https://stackoverflow.com/questions/15585842
复制相似问题