我想比较映射文件中的信息,以便以制表符分隔的文件格式检索交联信息。
例如,一个文件包含
COG0001 882.DVU3168
COG0002 883.DvMF_2502
COG0001 1140.Synpcc7942_0645
COG0001 1148.SYNGTS_2220
Run Code Online (Sandbox Code Playgroud)
另一个文件
COG0001 H
COG0002 E
Run Code Online (Sandbox Code Playgroud)
最终文件应包含以下信息:
COG0001 882.DVU3168 H
COG0002 883.DvMF_2502 E
COG0001 1140.Synpcc7942_0645 H
COG0001 1148.SYNGTS_2220 H
Run Code Online (Sandbox Code Playgroud)
编辑
回到我的问题,我还想将信息从文件 2 打印到文件 3。
我的命令是:
awk -F $'\t' 'FNR==NR{a[$2]++;next}a[$1]''{print $0, ..... }' file2 file1 > file3
Run Code Online (Sandbox Code Playgroud)
这将根据匹配第 2 列(file2)到第 1 列(file1)的内容为我提供从 file1 的所有内容。
如何设置以便我也可以打印文件 2 中的信息?
我想合并两个表:
文件 1:
1 今天
2 明天
3 红色
文件2:
1 很多
1 有时
2 在工作
2 在家里
2 有时
3 新
所需的输出(文件 3):
1 今天很多
1 今天有时
2 明天上班
2 明天在家
2 明天有时
3 红色 新
我想出了以下内容:
awk -F '[\t]' -v OFS='\t' '{i=$1;$1=x} NR==FNR{A[i]=$0;next} A[i]{print i,$0A[i]}' file2 file1 > file3
Run Code Online (Sandbox Code Playgroud)
但是,它只给了我:
1 今天有时
2 明天有时
3 红色 新