如何用Linux命令为file1添加对应Barcode的Clone匹配列?
Linux命令实现Barcode与Clone名称的匹配合并
这是一个典型的键值匹配合并场景,在Linux下有几个非常高效的命令可以解决,我给你推荐两种最常用的方案:
方案一:使用join命令(适用于已排序的文件)
join是Linux专门用于合并两个文件中相同键值行的工具,你的file1和file2已经按Barcode顺序排列,直接运行以下命令即可:
join file1 file2
原理说明:
join默认以第一列作为匹配的键,会自动将两个文件中键相同的行合并,把file2的第二列(Clone名称)追加到file1的对应行后面- 如果你的文件未排序,可以先通过管道排序后再合并:
join <(sort file1) <(sort file2)
方案二:使用awk命令(灵活通用,无需排序)
如果你的文件没有按Barcode排序,或者需要更灵活的处理逻辑,awk是更好的选择,命令如下:
awk 'NR==FNR{map[$1]=$2; next} {print $0, map[$1]}' file2 file1
原理说明:
NR==FNR:当处理第一个输入文件(file2)时,将Barcode(第一列)作为数组map的键,Clone名称(第二列)作为对应的值存储起来next:跳过后续逻辑,继续处理file2的下一行- 处理第二个输入文件(
file1)时,每一行输出原内容,再追加对应的map[$1](即匹配到的Clone名称)
示例输出验证
运行上述任意命令后,都会得到你期望的输出:
BAR_001 Clone1
BAR_001 Clone1
BAR_002 Clone2
BAR_002 Clone2
BAR_003 Clone3
BAR_003 Clone3
BAR_003 Clone3
...
BAR_400 Clone400
BAR_400 Clone400
内容的提问来源于stack exchange,提问作者Kenny
相关产品推荐
相关产品推荐

