私はこのようなテーブルを持っており、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の2つのファイルがマージされ、一致すると、最初のファイルの2番目のフィールドが印刷されます
1.2
。
または以下を使用してawk
:
awk 'FNR==NR{a[$1]=1} FNR!=NR&&a[$1]{print $2}' file index
- ファイルが
file
配列にロードされますa
。 index
2番目のファイルを処理するときは、awk
最初のフィールドが配列にインデックスであることを確認してくださいa[$1]
。その場合は、2番目のフィールドを印刷してください$2
。