这是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
这个工作得很好,但它无法处理空行作为变化的要求。谁能帮我?