我想将第一个文件中的数字与第二个文件的第二列相匹配,并在单独的输出文件中获取匹配的行。请告诉我代码有什么问题?
我在文件IDS.txt中有一个数字列表
10028615
1003
10096344
10100
10107393
10113978
10163178
118747520
我有第二个名为src1src22.txt的文件
From src:'1' To src:'22'
CHEMBL3549542 118747520
CHEMBL548732 44526300
CHEMBL1189709 11740251
CHEMBL405440 44297517
CHEMBL310280 10335685
预计newoutput.txt
CHEMBL3549542 118747520
我写了这段代码
while read line; do cat src1src22.txt | grep -i -w "$line" >> newoutput.txt done<IDS.txt
答案 0 :(得分:1)
您的命令行有效 - 除了您缺少分号:
while read line; do grep -i -w "$line" src1src22.txt; done < IDS.txt >> newoutput.txt
答案 1 :(得分:1)
我找到了一种执行任务的有效方法。而不是循环尝试这个-f在它旁边的文件中给出模式并在下一个文件中搜索。使用grep可能出现无效字符长度的可能性降低,循环减慢了进程。
grep -iw -f IDS.txt src1src22.tx >>newoutput.txt
答案 2 :(得分:0)
试试这个 -
awk 'NR==FNR{a[$2]=$1;next} $1 in a{print a[$1],$0}' f2 f1
CHEMBL3549542 118747520
其中f2是src1src22.txt