我一直在使用这个问题的建议: Find value from one csv in another one (like vlookup) in bash (Linux)
尝试创建一个脚本,在其中遍历多个数据文件,并以 vlookup 样式的方式从其他几个(单个)参考文件中添加列。
数据文件示例 (*.data)
info1   7   44567    1   2  marker1
info2   3   143679   2   2  marker2
参考文件示例(ref.txt,要查找的文件)
marker1     66%
marker2     34%
第二个参考文件示例(ref2.txt,第二个要查找的文件)
info1 准确 info2 部分
需要输出
info1   7   44567    1   2  marker1   66%   exact
info2   3   143679   2   2  marker2   34%   partial
尝试循环(仅显示一个参考文件,因为我还没有工作!)
#!/bin/bash
for file in `ls /path/*.data`; 
do
for i in $file; 
do 
KEY=$(cut -f 6 $file);
    printf "%s\t" $i;
    grep "${KEY}" /path/ref1.txt | cut -f 2 ; 
done
done
我认为我编写的脚本有两个问题当前输出是每个输入文件一行,而不是附加的输入文件的所有行,它是文件的文件名而不是文件中的一行。不过,参考位似乎确实有效(据我所知,单行输出)。IE:
/path/1.data    66%
谁能告诉我出了什么问题,或者请提出一个更聪明的方法来做到这一点?非常感谢。