iT邦幫忙

0

請問要如何用"cygwin"script 來計算次數的運算?

  • 分享至 

  • xImage

Users of Allegro_studio: (Total of 5 licenses issued)
RESERVATIONs for GROUP LAYOUT
RESERVATION for GROUP RD_EE

請問高手,
1.我想要先計算"GROUP"的次數--- 2=aa
2.再來挑第一行的數字 5-aa =3 這個結果,要何寫呢?
小弟是從沒接觸過程式的人,望指導.謝謝大大.

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

6
逮丸逮丸
iT邦大師 1 級 ‧ 2011-03-04 09:56:33
最佳解答

cygwin 是 Linux/Unix 裡常用的 bash 給 windows 用的環境,
只要找 bash shell script 相關的字樣,
可找到許多使用 bash 的教學或技巧或發問解答。

如果 a.txt 的內容為:

<pre class="c" name="code">Users of Allegro_studio: (Total of 5 licenses issued)
RESERVATIONs for GROUP LAYOUT
RESERVATION for GROUP RD_EE 

然後產生一個 do.sh 的執行指令檔:
<pre class="c" name="code">aa=tr -s " " "\n" &lt; a.txt |grep -c "GROUP"
echo "There are" $aa "GROUP"
total=head -1 a.txt | sed -e "s/.* \([0-9][0-9]*\) .*/\1/"
echo "The Number is "$total
result=$(($total-$aa))
echo "The Result is:" $result

執行:sh do.sh會產生下列的結果:
<pre class="c" name="code">$ sh do.sh
There are 2 GROUP
The Number is 5
The Result is: 3

怎麼用shell script來算一檔案中match幾個指定的字,
是參考 How to count the occurences of a specific word in a file in bash shell 這一文中的解答語法。

若用 ruby 程式語言的話:

&lt;pre class="c" name="code">#do.rb
f=File.read('a.txt')
aa=f.scan(/GROUP/).size
puts "aa is #{aa}"
f =~ /of (\d*) license/
total=$1
puts "total is #{total}"
puts "result is #{total.to_i - aa.to_i}"

也是較容易處理文字上的議題。

我要發表回答

立即登入回答