繁体   English   中英

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

[英]How can I read one line at a time with C shell in unix

我尝试使用 c shell 编写一个小脚本,该脚本将获取一个由多行组成的文件,每行包含一个名称和一个数字,并将所有具有特定名称的数字相加。 如何每次都将下一行放入变量中?

我所做的总结部分:(在我能够得到一条完整的线到 $line 之后)

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

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

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

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

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

set text = 'awk -v ln=$j '{if (NR==ln) print $0}' test.txt'
foreach line (`awk {print $0} test_file`)
  echo $line
end

在 cshell 中正确的方法 1

foreach line (`awk '{print}' test_file`)
  echo $line
end

在 cshell 中正确的方法 2

set n = `wc -l a.txt`
set i = 1
while($i <= $n)
    set line = "`awk '{if (NR == $i) print}' a.txt`"
    echo ${line}
    @i++
end

可以从任何 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM