用cshell逐行读文件逐行处理

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

用下面的方法:

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航