我刚遇到一个问题。这与我在 ID 匹配时如何从另一个文件复制列之前已经询问过的内容非常相似,但有一些区别。
我有一个文件夹(folder1),其中包含多个文件:
desired_pos142535974
desired_pos142540918
desired_pos142541687
desired_pos142541814
desired_pos142541910
desired_pos142542976
头文件看起来像这样
head desired_pos142535974
1 142535974 196 HG00100
1 142535974 64 HG00101
1 142535974 63 HG00103
1 142535974 26 HG00108
1 142535974 85 HG00110
1 142535974 83 HG00114
1 142535974 148 HG00115
我有另一个文件夹(folder2)
desired_output_pos142535974_g
desired_output_pos142540918_g
desired_output_pos142541687_g
desired_output_pos142541814_g
desired_output_pos142541910_g
desired_output_pos142542976_g
folder2 中的每个文件看起来像这样
head desired_output_pos142535974_g
HG00096 0|1
HG00097 1|0
HG00099 0|1
HG00100 1|0
HG00101 0|1
HG00102 0|1
HG00103 1|1
文件夹 1 中的每个文件在文件夹 2 中都有一个相同的文件,具有相同的“pos....”ID(例如,desired_pos142535974 和desired_output_pos142535974_g 都属于同一个人)。
所以,这次我想检查文件夹 1 中文件的最后一列是否与文件夹 2 中具有相同“pos”ID 的文件的第一列相匹配,将文件 2 的第二列添加到 file1,最后得到一些东西喜欢
head desires_pos142535974
1 142535974 196 HG00100 1|0
1 142535974 64 HG00101 0|1
1 142535974 63 HG00103 1|1
我看到您可能面临的唯一问题是您想提供相同的文件名。干得好:
find
只有-type f
位于/path/to/dir1
其名称开头的路径中的文件desired_pos*
(*
表示后跟任何内容或没有)然后执行与此处说明相同的操作;就在这里file2是其中的文件/path/to/dir2/desired_output_xxx
,$1
之后是file1在/path/to/dir1
两个文件具有相同pos#
部分的位置。正在返回相同的部分,该部分从file1${1#*_}
中删除最短匹配项,直到第一次看到。_