比较两个档案&标记已更改字段。

时间:2015-05-20 10:15:29

标签: awk gawk

这是来自awk-to-compare-two-file-by-identifier-output-in-a-specific-format

的扩展问题

按照规定,假设两个文件有一些区别

file 1

a||d||f||a
1||2||||4


file 2

a||d||f||a
1||1||3||4
1||2||r||f

所需的输出将是

1||1#2||3#||4
1||2||r||f

你可以看到我只想比较文件&相应地打印,例如如果文件2中找到的任何更新将打印为updated_value#oldvalue&添加到文件2的任何新行也将相应更新。

&安培;我希望现在输出差异为@fedorqui建议

awk 'BEGIN{FS=OFS="|"}
     FNR==NR {for (i=1;i<=NF;i+=2) a[FNR,i]=$i; next}
     {for (i=1; i<=NF; i+=2)
         if (a[FNR,i] && a[FNR,i]!=$i)
             $i=$i"#"a[FNR,i]
     }1' f1 f2

结果

1||1#2||3||4
1||2||r||f

这很好用但是它无法处理空行作为更改的要求。谁能帮我?

1 个答案:

答案 0 :(得分:0)

此命令

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

生成

awk 'BEGIN{FS=OFS="|"}
     NR==FNR{for(i=1;i<=NF;i++)a[FNR" "i]=$i;b[FNR]=$0;next}
     {for(i=1;i<=NF;i++)(FNR" "i in a)&&a[FNR" "i]!=$i&&$i=$i"#"a[FNR" "i]}
     !(b[FNR]==$0)' file{1,2}

预期的输出是什么。