我有两个变量,如下所示。
CTRL + B
如果条件失败,因为它正在查找a=rw,bg,hard,timeo=600,wsize=1048576,rsize=1048576,nfsvers=3,tcp,actimeo=0,noacl,lock
b=bg,rg,hard,timeo=600,wsize=1048576,rsize=1048576,nfsvers=3,tcp,actimeo=0,noacl,lock
变量中位置1的rw
变量的a
值,但它位于变量b
中的位置2。
即使字段的顺序不相同,我如何比较两条线呢?
答案 0 :(得分:2)
这个脚本似乎有效:
std::
示例运行:
a="rw,bg,hard,timeo=600,wsize=1048576,rsize=1048576,nfsvers=3,tcp,actimeo=0,noacl,lock"
b="bg,rg,hard,timeo=600,wsize=1048576,rsize=1048576,nfsvers=3,tcp,actimeo=0,noacl,lock"
{ echo "$a"; echo "$b"; } |
awk -F, \
'NR == 1 { for (i = 1; i <= NF; i++) a[$i] = 1 }
NR == 2 { for (i = 1; i <= NF; i++)
{
if ($i in a)
delete a[$i]
else
{
mismatch++
print "Unmatched item (row 2):", $i
}
}
}
END {
for (i in a)
{
print "Unmatched item (row 1):", i
mismatch++
}
if (mismatch > 0)
print mismatch, "Mismatches"
else
print "Rows are the same"
}'
毫无疑问,使脚本更紧凑的方法,但代码是相当简单的。如果字段在第二行中出现两次并在第一行中出现一次,则第二行将报告为不匹配的项目。代码在处理第一行时没有检查重复项 - 这是一个很容易的练习。代码不打印输入数据以进行验证;它可能应该。