我是 shell 脚本的新手,所以我需要你们的帮助来实现我的目标。我有一个名为 input.csv 的文件,其中包含如下所示的数据,
G22822 277 OR2
G22822 329 OR9
G22940 286 OR3
G22940 412 OR7
G25365 289 OR3
现在,OR2
、OR9
、OR3
、OR7
和 OR3
是还有名称为 al_or2.cap
、al_or9.cap
、al_or3.cap
、al_or7.cap
的不同文件和 al_or3.cap
在不同的路径。这些 cap 文件中的数据如下所示,
在 al_or2.cap 中:
277 ASCII GRP 184578924
102 ASCII GRP 754815923
在 al_or9.cap 中:
981 ASCII GRP 542189353
329 ASCII GRP 158203981
所有 cap 文件中都存在类似的明智数据。
如果您在 input.csv(G22822 277 OR2) 中看到第一行作为提到的数据,我需要转到 al_or2.cap 并搜索关键字 277 并打印 G22822 和 542189353(G22822 存在于 input.csv 中,542189353 存在于 al_or2 中.cap).
然后,对于这个 G22822 329 OR9,我需要转到 al_or9.cap 并打印 G22822 和 158203981。
我需要的输出如下:
G22822 184578924
G22822 158203981 and so on..
请帮助我实现我的目标。
最佳答案
假设您提供的数据是准确的,并且不知道您的目录结构,这里有一些东西
#!/bin/bash
while read a b c
do
awk -v a=$a -v b=$b 'b==$1{printf "%s %s\n", a, $4}' tmp/al_$(echo $c | tr '[A-Z]' '[a-z]').cap
done < input.csv
将其保存为 karthik.sh
,保存 input.csv 的前两行,创建一个包含文件 al_or2.cap
和 的子目录 tmp >al_or9.cap
并运行 ./karthik.sh
我得到以下输出:
./karthik.sh
G22822 184578924
G22822 158203981
关于linux - 我想转到一个文件并根据文件中存在的文件名和关键字获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53443069/