如何在unix中使用C shell一次读取一行

时间:2010-10-25 09:14:43

标签: unix csh

我尝试使用c shell创建一个小脚本,它将获取由多行组成的文件,每行包含一个名称和一个数字,并将所有具有特定名称的数字相加。我怎样才能每次将变量放入变量?

我做的总结部分:(在我能够获得$ line的完整行之后)

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

6 个答案:

答案 0 :(得分:8)

我已经设法使用下一段代码来解决它:

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

答案 1 :(得分:1)

我发现这个讨论可能会回答你的问题: http://www.linuxquestions.org/questions/programming-9/csh-while-read-738708/

答案 2 :(得分:0)

变量文件是源文件 test.txt 中以空格分隔的行数组。一次提取一行很有用。

['3', '1', '4', '1', '5', '9', '2', '6', '5', '3', '5', '8', '9', '7', '9', '3', '2', '3', '8', '4', '6', '2', '6', '4', '3', '3', '3', '1', '4', '1', '5', '9', '2', '6', '5', '3', '5', '8', '9', '7', '9', '3', '2', '3', '8', '4', '6', '2', '6', '4', '3', '3']

答案 3 :(得分:0)

foreach 行 (awk {print $0} test_file) 回声 $line 结束

答案 4 :(得分:0)

在 cshell 中正确的方法 1

foreach 行 (awk '{print}' test_file) 回声 $line 结束

在 cshell 中正确的方法 2

设置 n = wc -l a.txt 设置 i = 1 而($i <= $n) 设置行 = "awk '{if (NR == $i) print}' a.txt" 回声 ${行} @我++ 结束

答案 5 :(得分:-1)

可以从任何shell调用awk:

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