【发布时间】:2018-02-26 20:03:39
【问题描述】:
我希望从文件中的一系列行号中提取最大值,并从另一个文件中读取该范围。
定义三个文件:
position_file:包含两列整数,定义了行号范围,所以 col1[i]
full_data_file:包含单列数值数据 (>=0)
extracted_data_file:对于 position_file 中的每一行,包含 full_data_file 中的最大值,其中 full_data_file 中的行号在 position_file 中定义的范围内
cat position_file
1 3
5 7
cat full_data_file
1
4.3
5.2
2.0
0.1
0
4
9
cat extracted_data_file
5.2
4
我目前的做法是
while read pos1 pos2; do
awk -v p1="$pos1" -v p2="$pos2" 'BEGIN {max=0} NR>=p1 && NR<=p2 && $1>max {max=$1} END {print max}' < full_data_file >> extracted_data_file
done < position_file
这不是一个好方法,因为我反复将 full_data_file 加载到内存中,这非常慢。我正在寻找一种方法来一步完成。我在 awk 中使用数组方面不是很熟练,但我想该解决方案可能(但不一定)在 awk 中使用数组。
非常感谢您的帮助。
【问题讨论】:
-
请发布示例输入文件和示例预期文件,以方便我们使用代码标签。