比较两个文件并附加值,在输出文件中保留不匹配的内容
Compare two files and append the values, leave the mismatches as such in the output file
我正在尝试匹配两个文件,file1.txt(50,000 行),file2.txt(55,000 行)。我想 campare file2 to file 1 提取第 2 列和第 3 列的值,并保留不匹配项。输出文件必须包含 file2 中的所有 ID,即它应该有 55000 行。注意:文件 1 中的所有 ID 都不存在于文件 2 中。即实际匹配可能少于 50,000。
file1.txt
ab1 12 345
ab2 9 456
gh67 6 987
file2.txt
ab2 0 0
ab1 0 345
nh7 0 0
gh67 6 987
输出
ab2 9 456
ab1 12 345
nh7 0 0
gh67 6 987
这是我尝试过的,但它只打印匹配项(所以我的输出文件中有 49,000 行,而不是 55,000 行)
awk "NR==FNR {f[]=[=13=];next} in f{print f[],[=13=]}" file1.txt file2.txt >output.txt
这个 awk 脚本可以工作
NR == FNR {
a[] = [=10=]
next
}
in a {
split(a[], b)
print , (b[2] == ? : b[2]), (b[3] == ? : b[3])
}
!( in a)
如果将其另存为 a.awk 和 运行
awk -f a.awk foo.txt foo1.txt
这将输出
ab2 9 456
ab1 12 345
nh7 0 0
gh67 6 987
我正在尝试匹配两个文件,file1.txt(50,000 行),file2.txt(55,000 行)。我想 campare file2 to file 1 提取第 2 列和第 3 列的值,并保留不匹配项。输出文件必须包含 file2 中的所有 ID,即它应该有 55000 行。注意:文件 1 中的所有 ID 都不存在于文件 2 中。即实际匹配可能少于 50,000。
file1.txt
ab1 12 345
ab2 9 456
gh67 6 987
file2.txt
ab2 0 0
ab1 0 345
nh7 0 0
gh67 6 987
输出
ab2 9 456
ab1 12 345
nh7 0 0
gh67 6 987
这是我尝试过的,但它只打印匹配项(所以我的输出文件中有 49,000 行,而不是 55,000 行)
awk "NR==FNR {f[]=[=13=];next} in f{print f[],[=13=]}" file1.txt file2.txt >output.txt
这个 awk 脚本可以工作
NR == FNR {
a[] = [=10=]
next
}
in a {
split(a[], b)
print , (b[2] == ? : b[2]), (b[3] == ? : b[3])
}
!( in a)
如果将其另存为 a.awk 和 运行
awk -f a.awk foo.txt foo1.txt
这将输出
ab2 9 456
ab1 12 345
nh7 0 0
gh67 6 987