抱歉,如果这是一个简单的 shell 编程问题,但我找不到一种方法来做我想要的。
我有 2 个日志。
log1
Cust Subsys StartDate EndDate col1 col2 col3
1001 10000 20150501 20150731 6.1700 0.0000 0.0000 -- this line is identical in both logs
1001 12000 20150401 20150630 0.0000 0.0000 0.0000 -- this line is missing from log2
1003 13000 20150310 20150630 2.4800 0.0000 0.0000 -- the value in log1.col1 is different from the one in log2.col1
和log2
Cust Subsys StartDate EndDate col1 col2 col3
1001 10000 20150501 20150731 6.1700 0.0000 0.0000 -- this line is identical in both logs
1003 13000 20150310 20150630 9.1800 0.0000 0.0000 -- the value in log1.col1 is different from the one in log2.col1
7000 7777 20150406 20150413 4.3300 0.0000 0.0000 -- this line is missing from log1
我想从这些日志中生成 3 个报告:
在中找到
log1
但不在其中的行log2
在中找到
log2
但不在其中的行log1
在 的前 4 列中相同
log1
但在:或log2
列上具有不同值的行。col1
col2
col3
我对所有列的两个日志进行了排序:
cat log1 |sort -n -k1,1 -k2,2r -k3,3 -k4,4 -k5,5 -k6,6 -k7,7 > log1.sorted
cat log2 |sort -n -k1,1 -k2,2r -k3,3 -k4,4 -k5,5 -k6,6 -k7,7 > log2.sorted
然后我尝试使用 comm 生成前 2 个报告:
comm -13 log1.sorted log2.sorted > unique2.log
comm -23 log1.sorted log2.sorted > unique1.log
我注意到在和unique1.log
中可以找到一些行。(我的日志每个都有超过 20.000 行)不用于提取不在其中一个日志中的行吗?是否仅在行号相同时才有效?(找到的行 是数字in和in )log1
log2
comm
unique1.log
188
log1
207
log2
如何提取第三份报告的数据,我只想在col1
col2
or中显示具有不同值的行col3
?
谢谢