我想將數字作為命令列引數并列印以 0、1、2 等結尾的數字計數,最多 5 個。
例子:
bash test.sh 12 14 12 15 14
預期輸出:
Digit_ends_with count
0 0
1 0
2 2
3 0
4 2
5 1
嘗試山:
read -a integers for i in ${integers[@]} do if [[ grep -o '[0-9]' $i ]] count=$(grep -c $i) if [ "$count" -ge "0" ] then
echo "Digit_ends_with" $i echo -e "Count ""$count" fi fi done
但這不起作用。我怎樣才能達到這個要求?
uj5u.com熱心網友回復:
#!/bin/bash
echo "Digit_ends_with count" #print table header
for argument in "$@" #loop over all given arguments
do
current=$(echo "$argument" | tail -c 2 ) #get last digit
if (( "$current" <= 5 )) #check if lower than 6
then
echo "$current" #echo if true
fi
done | sort | uniq -c | sed -E 's/\s //' | sed -E 's/([0-9] ).?([0-9] )/\2\t\t\1/' #sort, count, remove leading spaces and switch the fields
例子:
╰─$ ./test.sh 188 182 182 12 13 14 18 15 16 17 18 19 10 0 0 0 0 0 0 0 0 0 0
Digit_ends_with count
0 11
2 3
3 1
4 1
5 1
uj5u.com熱心網友回復:
請您嘗試以下方法:
#!/bin/bash
for i in "$@"; do # loop over arguments
(( count[i % 10] )) # index with the modulo 10
done
printf "%s %s\n" "Digit_ends_with" "count" # header line
for (( i = 0; i < 6; i )); do # loop between 0 and 5
printf "%d\t\t%d\n" "$i" "${count[$i]}" # print the counts
done
結果./test.sh 12 14 12 15 14:
Digit_ends_with count
0 0
1 0
2 2
3 0
4 2
5 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/451497.html
上一篇:拆分組態檔中的文本
下一篇:使用awk列印最小值和最大值
