centos 中使用命令简单的比较两个文件,把符合的内容所在的行提取出来

    今天继续年前的一项工作,将系统报出错误的日志中的id值提取出来,并在源文件中寻找出该id值所对应的所在行内容,另存到其他文件中;上来一个思路,先写个脚本程序,读取文件,一行行查找id值,将id保存下来存成个文件A,在读取文件A的内容,与源文件B做比对,有符合id的将所在那一行提取出来。

     再写脚本时发现需要用到正则,因为id值是数字且位数不固定,忽然想起来linux中的grep命令,不就是过滤符合正则的字符串,将其显示吗,完全可以通过grep 查找将结果重定向的文件中即可。结果发现使用命令:grep -wo  "id:[0-9]*,"  error.log > id.txt   就将错误的id值提取出来了,十分的方便。-w 是完全匹配单词  -o 是只显示匹配的内容,其他内容不显示。

    在进行第二步,在源文件找出id值在id.txt中的所有内容;本来想通过多重循环过滤实现,后来想grep命令是否有两个文件比对的功能,经查帮助发现 -f 可以将第一个文件中的所有行,作为过滤字符串来在第二个文件中查找符合的字符串,命令如下:grep  -wf  id.txt   rule.txt

    本来需要写个脚本来实现的内容,通过grep命令就简单的实现了,真是方便,又学了一手。

posted @ 2022-02-08 23:02  迷糊一世  阅读(451)  评论(0编辑  收藏  举报