2 つのテキスト ファイルがあります。hash_only.txt と final_output.txt hash_only.txt は次のようになります。
193548
401125
401275
final_output.txt は以下のようになります。
193548 1199687744 5698758206701808640
193548 1216464960 5698758206761818112
193548 1216464960 5698758206778417152
193548 4236691520 5698758206778945280
401125 2138607488 5698762375908890880
401125 863932288 5698762375909423360
401125 3884158848 5698762375910044160
401125 2609483648 5698762375911032320
次のことを行うループを作成しようとしています。
for i in `cat hash_only.txt` ;
do
for j in `cat final_output.txt` ;
do
if [ $i -eq $j ]
then
echo $i $j
fi
done
done;
193548,401125 などの hash_only.txt のすべての値について、列 1 が 193548,401125 などに一致するファイル 'final_output.txt' から列 2,3 を抽出し、列 2,3 を print_193548、print_401125 などに出力します。
上記のコードでは、then の部分にコードを入れる必要があります。しかし、私は bash にあまり精通していないため、それを理解できません。
編集:
my スクリプトを次のように変更しました for i in cat hash_only.txt
;
do
for j in `cat final_output.txt` ;
do
if [ $i -eq $j ]
then
gawk 'FNR==NR
{ hash[$1]
next
}
$1 in hash {
print $2,$3 >> "print_"$1;
}' hash_only.txt final_output.txt
fi
done
done;
print_[0-9]* という名前のファイルは作成されません。