我需要循环浏览文件,同时将其与另一个文件进行比较,以获得相同的内容。现在它是一个带有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