【发布时间】:2014-03-19 10:19:13
【问题描述】:
我有两个文件如下:
file1:
3 1
2 4
2 1
file2:
23
9
7
45
file1 的第二个字段用于指定file2 包含要检索和打印的数字的行。在所需的输出中,打印file1 的第一个字段,然后打印检索到的字段。
所需的输出文件:
3 23
2 45
2 23
这是我解决这个问题的尝试:
IFS=$'\r\n' baf2=($(cat file2));echo;awk -v av="${baf2[*]}" 'BEGIN {split(av, aaf2, / /)}{print $1, aaf2[$2]}' file1;echo;echo ${baf2[*]}
但是,此脚本不能使用 Bash 数组 baf2。
解决方案必须高效,因为file1 有数十亿行,而file2 在实际情况下有数百万行。
【问题讨论】:
-
这可能会为您指明正确的方向:stackoverflow.com/questions/6022384/…