档案a -
aaabaaa
档案b -
aaaaaa
请求输出样本 -
aaa-aaa
* - 表示缺少一封信
如何使用基本的unix命令或shellscript或sql或4gl代码完成此操作? (只需要任何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--