是否有一种简单的方法来检查文件(文件 2)第二列中的值是否存在于另一个文件(文件 1)第二列中,例如通过在相关行旁边打印一个星号?如果可能的话使用awk。
文件1
A 1,2,3,4
B 15,16,17
文件2
A 3
B 18
预期输出:文件 3
A 1,2,3,4 *
B 15,16,17
编辑 如果文件 2 如下所示怎么办:
A 3,8
B 18,19
但预期输出保持不变?
答案1
尝试这个:
$ awk '
FNR == NR {
a[$1] = $2;next
}
{
split(a[$1],b,",");
for (i in b) {
if ($2 == b[i]) {
printf("%s %s\t*\n",$1,a[$1]);
next;
}
}
print $1,a[$1];
}
' file1 file2
A 1,2,3,4 *
B 15,16,17
更新
使用新输入,尝试:
$ awk '
FNR == NR {
a[$1] = $2;
next;
}
{
split($2,b,",");
split(a[$1],c,",");
for (i in b) {
if (b[i] in c) {
printf("%s %s\t*\n",$1,a[$1]);next;
}}
print $1, a[$1];
}
' file1 file2