2014-03-04 15 views
0

有誰能告訴我該怎麼做? 我的代碼如下:Unix:如何檢查第3位出現的次數從1到1232

#!/bin/bash 
typeset -i count=0; 
for ((i=1;i<=1232;i++)); 
do 
if [        ]; then 
count=count+1; 
fi 
done 
echo $count 

333算作一個發生。

+0

333會計爲1例還是3例? –

+0

它會算作一個案例。我試圖使用grep – user3105629

+0

我可以在一行中完成,但如果這是作業,我不想僅發佈答案。 「 –

回答

0

試試這個:

#!/bin/bash 
typeset -i count=0; 
for ((i=1;i<=1232;i++)); 
do 
    if [[ "$i" =~ .*3.* ]]; then 
     count=count+1 
    fi 
done 
echo $count 

該代碼執行一個正則表達式中i尋找3作爲for循環的進展。

順便說一下,答案是315

如果您需要使用grep

#!/bin/bash 
typeset -i count=0; 
for ((i=1;i<=1232;i++)); 
do 
    if grep -q 3 <<<$i; then 
     count=count+1 
    fi 
done 
echo $count 

這是慢了很多,雖然。

+0

你介意給我解釋grep -q 3 <<< $ i嗎? – user3105629

+0

@ user3105629是的。我編輯了我的問題。不過,它比我發佈的標準正則表達式要慢很多。 –

+0

我仍然沒有得到(grep -q 3 <<< $ i)。 對不起 – user3105629

0

從1到1232指望有多少數字在他們的十進制表示(所以333被計算一次)至少一個3

$ seq 1232 | grep -c 3 
315 

要計算的3 S中的總數(因此333計數3次)​​:

$ seq 1232 | sed 's/./& /g' | fmt -w 1 | grep -c 3 
346 
相關問題