Sql 如何区分和显示两个文件在一行中的不同之处
归档- 文件b-Sql 如何区分和显示两个文件在一行中的不同之处,sql,unix,4gl,Sql,Unix,4gl,归档- 文件b- aaabaaa 请求输出样本- aaaaaa *-我的意思是少了一封信 如何使用基本unix命令或shellscript或sql或4gl代码来完成此操作?(只需要任意1)类似的功能应该可以使用(文件顺序非常重要,这将比较第一个文件的第一行和第二个文件的第一行): 测试: 输出: 类似的方法应该可以工作(文件顺序非常重要,它比较第一个文件的第一行和第二个文件的第一行): 测试: 输出: 您好,我可以问一下,如果文件1中有多余的行,它是否仍然能够检查差异在哪里?像所有的例子一样
aaabaaa
请求输出样本-
aaaaaa
*-我的意思是少了一封信
如何使用基本unix命令或shellscript或sql或4gl代码来完成此操作?(只需要任意1)类似的功能应该可以使用(文件顺序非常重要,这将比较第一个文件的第一行和第二个文件的第一行): 测试: 输出:
类似的方法应该可以工作(文件顺序非常重要,它比较第一个文件的第一行和第二个文件的第一行): 测试: 输出:
您好,我可以问一下,如果文件1中有多余的行,它是否仍然能够检查差异在哪里?像所有的例子一样---在额外的一行中。正如我提到的,文件顺序非常重要。如果第二个文件中存在额外的行,则上述解决方案将起作用。如果第一个文件中有多余的一行,那么我们将不得不添加额外的代码。嗨,我可以问一下文件的第一个文件中是否有多余的一行,它是否仍然能够检查差异在哪里?像所有的例子一样---在额外的一行中。正如我提到的,文件顺序非常重要。如果第二个文件中存在额外的行,则上述解决方案将起作用。若第一个文件中有额外的行,那个么我们将不得不添加额外的代码。
aaa-aaa
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--