如何区分和显示两个文件之间的行中的不同之处

时间:2013-06-26 01:27:28

标签: sql unix 4gl

档案a -

aaabaaa

档案b -

aaaaaa

请求输出样本 -

aaa-aaa

* - 表示缺少一封信

如何使用基本的unix命令或shellscript或sql或4gl代码完成此操作? (只需要任何1)

1 个答案:

答案 0 :(得分:3)

这样的事情应该有效(文件顺序非常重要,这会将第一个文件的第一行与第二个文件的第一行进行比较):

awk '
NR==FNR {
    a[NR]=$0
    next
}
{
    delete ary
    delete ary2
    x=y=len=i=k=0
    x=split($0,ary,""); 
    y=split(a[FNR],ary2,"");
    len=x>y?x:y;
    while(len>0) {
        if (ary[++i]==ary2[++k]) {
            printf ary[i]
        }
        else
        {
            printf "-"
            i--
        }
        len--
    }
    print ""
}' file1 file2

测试:

$ cat file1
aaabaaa
abcdefabc
aaabbbccc

$ cat file2
aaaaaa
abcabc
acacacac

输出:

aaa-aaa
abc---abc
a-----c--