首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grep唯一匹配项

grep唯一匹配项
EN

Stack Overflow用户
提问于 2012-04-19 14:48:10
回答 3查看 1.3K关注 0票数 0

我有一个日志文件(file.log),其中包含多次出现的in,即一个文件中的82244956。已使用以下命令创建了file.log

代码语言:javascript
复制
gzip -cd /opt/log.gz | grep "JBOSS1-1" >> ~/file.log

示例:

代码语言:javascript
复制
2012-04-10 09:01:18,196 LOG  (7ysdhsdjfhsdhjkwe:IN) JBOSS1-1 (RP-yedgdh5567) [PayPalWeb] Fetch data with id: 82244956  
2012-04-10 09:02:18,196 LOG  (24343sdjjkidgyuwe:IN) JBOSS1-1 (RP-yedgdh5567) [PayPalWeb] Fetch data with id: 82244956  
2012-04-10 09:03:18,196 LOG  (6744443jfhsdgyuwe:IN) JBOSS1-1 (RP-yedgdh5567) [PayPalWeb] Fetch data with id: 82244957  
2012-04-10 09:04:18,196 LOG  (7ysdhsd5677dgyuwe:IN) JBOSS1-1 (RP-yedgdh5567) [PayPalWeb] Fetch data with id: 82244957  

同样,我们有10000行具有不同的id (但每个id重复2-3次。示例在此示例中,顶部和底部2行分别使用id 82244956和82244957重复)。我们需要基于唯一ids (匹配ids中的任何行)的结果集,即:

代码语言:javascript
复制
2012-04-10 09:01:18,196 LOG  (7ysdhsdjfhsdhjkwe:IN) JBOSS1-1 (RP-yedgdh5567) [PayPalWeb] Fetch data with id: 82244956  
2012-04-10 09:03:18,196 LOG  (6744443jfhsdgyuwe:IN) JBOSS1-1 (RP-yedgdh5567) [PayPalWeb] Fetch data with id: 82244957  

我尝试在Linux上编写awk程序,但没有成功:

代码语言:javascript
复制
awk ' { arr[$1]=$0 } END { for ( key in arr ) { print arr[key] } } ' file.log >> final-report.log

或者,更好的方法是创建仅具有不同ids的file.log

请告诉我如何修改它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-19 14:57:03

$1是第一个字段,日期。id是最后一个字段,用awk的话来说就是$NF。所以:

代码语言:javascript
复制
awk '{arr[$NF] = $0} END { for (key in arr) { print arr[key] } }' file.log >> final-report.log

这将保留具有给定键的最后一条记录。要保留第一条记录,您必须在脚本的主要处理部分执行条件赋值。

票数 3
EN

Stack Overflow用户

发布于 2012-04-19 15:40:18

代码语言:javascript
复制
awk '!_[$NF]++' file.log >> final-report.log
票数 1
EN

Stack Overflow用户

发布于 2012-04-19 17:53:48

您可以通过运行以下脚本来获取结果。要保留第一条记录,您应该在脚本的主要处理部分进行条件判断。

代码语言:javascript
复制
awk -F"\t" '{delete arr;split($0,arr,"id:"); id_num=arr[2];
             if(!(id_num in dic)){line[id_num]=$0;dic[id_num];}}
            END{for(i in line)print line[i] }' file.log  > result.log
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10222937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档