Linux新手在這裏和第一篇文章。請原諒我缺乏清晰度。差異最小值法
我有我認爲是兩個不同方法之間的差異的簡單的最小值問題:通過文件awking文件和使用通配符awking。
我目前有大約20,000個文件(和增長),我只想在第二列中找到總體最小值。這些文件都有相同的前綴,並且位於執行我的腳本的下一級目錄中,所以我使用通配符快速完成任務。
實施例:
awk 'min=="" || $2 < min {min=$2} END{print min}' */myfile.10*
這需要約14秒,以執行,但它沒有找到真正的最小值。
另外,我通過每個目錄中的每個文件踩,我似乎找到了正確的最小值:
min=1000000000.0
for dir in `ls -d *run*/`; do
minlocal=1000000000.0
for file in `ls -1 ${dir}myfile.*`; do
for val in `awk 'NR==1 {print $2}' $genfile`; do
compare_result=`echo $minlocal" > "$val | bc`
if [ $compare_result -eq 1 ]; then
minlocal=$val
fileminlocal=$file
compare_result=`echo $min" > "$minlocal | bc`
if [ $compare_result -eq 1 ]; then
min=$val
filemin=$file
fi
fi
done
done
compare=`echo $min" > "$minlocal | bc`
if [ $compare -eq 1 ]; then
echo " Error finding lowest chi^2 in " $fileminlocal
echo " Skipping..."
else
echo " Lowest value (" $minlocal ")found in " $fileminlocal
fi
done
這種方法找到正確的總體最小,但需要4分鐘時間這樣做。我理解循環每個這些文件將需要更多時間,但爲什麼使用通配符失敗?
我對某個文件做了測試,你的'awk'確實有效。對我來說,它給出了正確的價值。 「真正的最低限度」是什麼意思?你可以重寫一下:'awk'!min || $ 2
Jotne
當您不迴應時,我們可以提供什麼幫助? – Jotne
感謝您的回覆(我已經睡覺了)。 – user3719139