我有一个像这样的表格,file
这是我的索引:
a X001
a X002
a X003
b X002
c X006
z X007
z X008
z X001
我想根据该索引搜索以下单列文件并返回index
.
a
b
z
所以该搜索的输出将是这样的:
X001
X002
X003
X002
X007
X008
X001
编辑:这是我的文件中的确切信息(每个文件的前 10 行)
指数
10803548 COG4190
10803554 COG1476
10803555 COG1192
10803559 COG3385
10803567 COG0071
10803570 COG1695
10803571 COG0467
10803573 COG3883
10803574 COG0714
10803576 COG1192
我正在搜索的文件:
10956722
11497860
11497860
11497924
11497924
11497924
11497924
11497924
11497979
11497979
此搜索的预期输出:
COG3704
COG1474
COG1474
COG2801
COG2801
COG2801
COG2801
COG2801
COG2223
COG2223
答案1
和join
:
join -o1.2 <(sort -k1n index) <(sort -k1n file)
- 这将在字段号 1 处合并两个文件,如果它们匹配,则打印第一个文件的第二个字段
1.2
。
或者与awk
:
awk 'FNR==NR{a[$1]=1} FNR!=NR&&a[$1]{print $2}' file index
- 该文件
file
被加载到一个数组中a
。 index
当处理第二个文件时,awk
检查第一个字段是否在数组中作为索引a[$1]
。如果是,则打印第二个字段$2
。