当前位置:Linux教程 - Linux综合 - 用cshell逐行读文件逐行处理

用cshell逐行读文件逐行处理

  用下面的方法: foreach i ( `cat file.txt`) echo $i end 一般情况是可以的,但是如果有空格就不行了(1行被分成多行)。 不知各位大虾有何高见? 俺试了以下方法: foreach i ('12 34' '34 56') echo $i end 结果是正确的: 12 34 34 56 但是俺稍微改了一下: foreach i (`echo "a" awk '{print "'''" $0 "'''" }' $fnm `) echo $i end 结果是: '12 34' '34 56' 请教各位大虾 用while read不用for 可取一行 这是bsh的一个逐行读取的例子,你可以参考一下。 j=0 len=`wc -l < $infile` while test $j -lt $len; do a=`tail +$j $infile head -1` …$a holds line of data… j=`eXPr $j + 1` done csh 这方面很弱,不好处理。我对 csh 不熟,也没有很好的办法,也许 1、你可以用 awk,对每一行的处理在 awk 环境中完成 awk "{print}" file.txt 2、如果不能或不想在 awk 中处理,试试这样,也可以在 csh 环境中完成 代码: #!/bin/csh set i = 0 set l = `awk 'END{print NR}' file.txt` # 总行数 while ( $i <= $l ) set line=`awk "{ if (NR == $i) print}" file.txt` echo $line ... # 任何对 $line 的处理应用 @ i ++ end 祝好运,写 csh 比写 sh, ksh 要痛苦好几倍, icon_razz.gif

(出处:http://www.sheup.com)