1つにマージする必要がある2つのファイルがあります。
ファイル1の例:
gene_1 578
gene_2 565
gene_3 3
gene_4 77
gene_5 8
gene_6 0
gene_7 45
gene_8 67
gene_9 0
gene_10 65
ファイル2の例:
COG0430 gene_5 gene_9
COG1949 gene_1 gene_3 gene_6
COG5049 gene_2 gene_4 gene_7 gene_10
COG5104 gene_8
出力ファイルは次のようにする必要があります。
COG0430 8 0
COG1949 578 3 0
COG5049 565 77 45 65
COG5104 67
この問題を解決できる命令を知っている人はいますか?
ベストアンサー1
#!/bin/bash
declare -A arr
readarray -t lines < "file1"
for line in "${lines[@]}"; do
arr[${line%% *}]=${line#* }
done
readarray -t lines2 < "file2"
for line in "${lines2[@]}"; do
echo -n "${line%% *} "
for word in $line; do
echo -n "${arr[$word]} "
done
echo
done
最もクリーンなbashではありませんが、動作します。また、bash> = 4.2であることを確認してください。