2010-10-25 37 views
4

我嘗試使用c shell製作一個小腳本,該腳本將包含一個由多行組成的文件,每行包含一個名稱和一個數字並將所有數字相加那個有一定的名字。每次我怎樣才能把下一行放入變量中?如何在unix中使用C shell一次讀取一行

的summig部分我做的是:(我就可以得到一個完整的行$行之後)

set line =($line) 
@ sum = $sum + $line[2] 
+5

[CSH PROGRAMMING CONSIDERED HARMFUL](http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/)可能與您正在做的事情相關,如果您有選擇你的外殼。這有點咆哮,但值得一讀。 – 2010-10-25 09:37:26

+0

@Noufal是否真的需要在每個csh問題? – 2010-10-27 13:25:34

+1

我不會故意尋找'csh'的問題發佈該鏈接,但每當我看到它提到(我遇到了這個問題,由於'unix'標籤),我提起它,因爲它是相當殘酷。我已經與它合作了2年左右,真的希望人們在開始之前把它扔掉。 – 2010-10-28 13:20:43

回答

6

我已成功使用在未來一段代碼來解決這個問題:

foreach line ("`grep $1 bank`") 
    echo $line 
    set line_break = ($line) 
    @ sum = $sum +$line_break[2] 
end 
echo $1\'s balance id: $sum\$ 
-1

awk中可以從任何shell被稱爲:

% cat >test.dat 
a 1 
a 3 
b 2 
a 7 
b 4 
% awk '($1 == "a") { SUM += $2 } END { print SUM }' < test.dat 
11 
+2

他特別詢問了如何在cshell中做到這一點。 – 2010-10-27 13:52:05

+0

他需要CSH解決方案,而不是AWK,但我必須同意:-)使用AWK \ SED工具通常比使用shell更好。 – codeScriber 2010-10-27 13:58:22

+0

事實上,這是錯誤的做法,除非有一些Unix我沒有意識到沒有awk :-) – Gaius 2010-10-27 14:31:42