0

文件一-

aaabaaa

文件 b-

aaaaaa

请求输出样本-

aaa-aaa

*- 表示缺少一个字母

如何使用基本的 unix 命令或 shellscript 或 sql 或 4gl 代码来做到这一点?(只需要任何 1 )

4

1 回答 1

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--
于 2013-06-26T02:28:32.620 回答