【发布时间】:2019-08-25 00:12:38
【问题描述】:
我正在尝试在多个文件中搜索 607526 个整数条目(保存在数组中)并添加相同的值并存储在文件中。32470 个条目花了 1 小时 45 分钟,但尚未完成。你能帮我改进这个脚本吗? 脚本如下:
#!/bin/bash
my_array=( `grep Curr a.txt | sed -e 's/Time:\(.*\).Num.*/\1/'` )
my_array_length=${#my_array[@]}
echo $my_array_length
rm -rf output
touch output
for element in "${my_array[@]}"
do
# echo "${element}"
toggles=`grep -w "time: ${element}" file_* | awk '{ sum += $6}; END {print sum }'`
echo "Time:"${element}".Num - "$toggles >> output
done
输入和输出是:
a.txt
Curr Time:0.Num - 6274
Curr Time:500.Num - 2
Curr Time:1500.Num - 62
Curr Time:2000.Num - 3
Curr Time:2500.Num - 2
Curr Time:3000.Num - 214
Curr Time:3500.Num - 205
Curr Time:4500.Num - 2
Curr Time:5000.Num - 211
Curr Time:5500.Num - 231
file_0
time: 0 count: 517
time: 2000 count: 9
time: 2500 count: 30
time: 4500 count: 14
time: 5000 count: 2
file_1
time: 0 count: 1500
time: 500 count: 10
time: 1500 count: 25
time: 2500 count: 39
time: 4500 count: 26
time: 5500 count: 154
output
Curr Time:0.NumToggles - 2017
Curr Time:500.NumToggles - 11
Curr Time:1500.NumToggles - 25
Curr Time:2000.NumToggles - 9
Curr Time:2500.NumToggles - 69
Curr Time:3000.NumToggles - 0
Curr Time:3500.NumToggles - 0
Curr Time:4500.NumToggles - 40
Curr Time:5000.NumToggles - 2
Curr Time:5500.NumToggles - 154
如果需要,可以在https://i.stack.imgur.com/kFxt8.jpg 获取图片。
【问题讨论】:
-
首先,您似乎产生了很多冗余进程。我认为我们可以调整很多。其次,请提供输入文件的示例,并提供有关您要完成的工作的更多详细信息。第三 - 快速提示 - 在
awk中重写整个想法并一次性完成。 (或 perl。或 bash -read很慢,但仍可能比这种方式更快。) -
Don't use images. 人们希望复制/粘贴或下载您的数据,以便我们可以在提供解决方案之前使用相同的文件进行测试。没有人愿意输入所有这些,即使它只是一个 fe 行,lol