我正在尝试浏览一些日志文件,需要从中剪切数据以便在其他软件中使用。日志文件如下所示:
Oct2614 status:ok 0.86.50.86
Oct2614 status:ok 0.111.122.11
Oct2714 status:ok 0.21.24.111
Oct2814 status:ok 0.15.121.12
Oct2814 status:ok 0.61.51.25
(IP addresses not real)
我想每天仅打印一个状态代码,因此我如何打印,例如Oct2614 status:ok 0.86.50.86
并忽略第二个实例Oct2614 status:ok 0.111.122.11
?使用bash是最好的,这样我就可以简单地制作一个.sh并在多个地方使用它。
我尝试过使用grep 'Oct2614' | uniq
,但我不熟悉bash命令。
答案 0 :(得分:2)
awk '{if (a[$1]++==0) print $0}' file.txt
答案 1 :(得分:1)
如果日期总是相同的字符数,请使用uniq -w
隐藏前7行与前一行相同的行:
$ uniq -w7 log.txt
Oct2614 status:ok 0.86.50.86
Oct2714 status:ok 0.21.24.111
Oct2814 status:ok 0.15.121.12
如果您要搜索特定日期的第一个条目,请尝试使用grep -m
来限制匹配数量:
$ grep -m1 '^Oct2614'
Oct2614 status:ok 0.86.50.86