@OP,做你做了什麼使得w ay效率不高。你在同一個文件上調用grep和wc 20次。只需打開一次文件,並在文件內容的1次迭代中獲取所需的所有內容。 bash中的示例4。0
declare -A arr
while read -r line
do
case "$line" in
*"Multiple_Frame ="*)
line=${line#*Multiple_Frame = }
num=${line%% *}
if [ -z ${number_num[$num]} ] ;then
number_num[$num]=1
else
number_num[$num]=$((number_num[$num]+1))
fi
;;
esac
done <"file"
for i in "${!number_num[@]}"
do
echo "Multiple_Frame = $i has ${number_num[$i]} counts"
done
同樣,您可以使用gawk中的關聯數組來幫助您完成此任務。
gawk '/Multiple_Frame =/{
sub(/.*Multiple_Frame = /,"")
sub(/ .*/,"")
arr["Multiple_Frame = "$0]=arr["Multiple_Frame = "$0]+1
}END{
for(i in arr) print i,arr[i]
}' file
當我按照你告訴我的方式拆分命令後,我得到以下錯誤信息。 ./loop_count_reference_frame_no.sh:第10行:grep「Multiple_Frame = $ var」20mrf.txt | wc -l:command not found – MaiTiano 2009-11-30 07:05:42
也許單引號無法生成正確的grep結果並將其發送到新的「count」變量。 – MaiTiano 2009-11-30 07:07:07
我知道什麼是錯誤的地方...我應該使用esc不是簡單的單引號。不管怎麼說,還是要謝謝你。 – MaiTiano 2009-11-30 14:24:44