用grep bash和while循环比较两个文件

时间:2018-02-17 09:21:50

标签: bash grep

我需要循环浏览文件,同时将其与另一个文件进行比较,以获得相同的内容。现在它是一个带有grep的while循环,因为这是建议的。目前它正在返回整个log1文件,并删除了数字。 sed文件将安装和删除的文件分开,并删除时间和日期以及单词install或remove。 所以$ prog工作它只是不匹配log2中的任何东西。 不允许使用awk,或者我已经完成了...

输入(dpkg.log文件的一部分):

2018‐01‐19 21:33:09 status half‐configured man‐db:amd64 2.6.7.1‐1ubuntu1 
2018‐01‐19 21:33:09 status half‐installed flex:amd64 2.5.35‐10.1ubuntu2 
2018‐01‐19 21:33:09 status triggers‐pending install‐info:amd64 5.2.0.dfsg.1‐2   
2018‐01‐19 21:33:09 status triggers‐pending man‐db:amd64 2.6.7.1‐1ubuntu1    
2018‐01‐19 21:33:14 status installed libfl‐dev:amd64 2.5.35‐10.1ubuntu2  
2018‐01‐19 21:33:14 status unpacked flex:amd64 2.5.35‐10.1ubuntu2  
2018‐01‐19 21:33:14 status unpacked libfl‐dev:amd64 2.5.35‐10.1ubuntu2


#!/bin/bash

sed -nf p2aInstalled.sed dpkg.log|sort|uniq -c > log1.txt
sed -nf p2bRemoved.sed dpkg.log|sort|uniq -c> log2.txt
#read installed file line by line

while read -r num prog; do

grep "$prog" log2.txt
echo "$prog"


done <log1.txt > p2b.out

输出是:

half‐configured man‐db:amd64 2.6.7.1‐1ubuntu1
half‐installed flex:amd64 2.5.35‐10.1ubuntu2 
triggers‐pending install‐info:amd64 5.2.0.dfsg.1‐2
triggers‐pending man‐db:amd64 2.6.7.1‐1ubuntu1
libfl‐dev:amd64 2.5.35‐10.1ubuntu2
unpacked flex:amd64 2.5.35‐10.1ubuntu2
unpacked libfl‐dev:amd64 2.5.35‐10.1ubuntu2

0 个答案:

没有答案