|
发表于 2003-4-23 13:53:05
|
显示全部楼层
最初由 javalee 发布
二楼说的有问题吧~~
一楼的意思是不是取文件中特定的信息,然后在程序中调用,如果是那样的话,可以通过先查找特定字符串,再赋值给变量.查找特定字符串用grep就可以呀!
楼主的意思是要读入文件中的第一个以$IFS分开的字段内容,比如:
123 456 780
因为一般$IFS的值是“空格”“换行符”所以这里的第一个字段是123,楼主想要得到的就是123。
不知道我理解得对不对。(如果是这样的话,下面的就继续,不是的话就当我什么都没有说)
而 read loop foo < file 的意思是将file文件中的当前行(从第一行开始)以$IFS分开的第一个字段(即123)赋给loop而后面的所有字段赋给foo(foo在此没有任何意思,只起占位作用),所以就可以取到123,并赋给loop。
从上面的分析可以看出123此可以用任何值代替,只要是一行中以$IFS为分隔的第一字段都会赋给loop而与这一字段为什么内容无关,如:
I am a unix fan 此时: loop="I" foo="am a unix fan"
chinawillwinthewar doyouthink? 此时:loop="chinawillwinthewar" foo="doyouthink?"
Ilikunixandunixlikeme 此时:loop="Ilikunixandunixlikeme" foo=""
如何读一个文件的某一行出来?例如我想读文件的第5行出来,用什么命令会比较方便呢?我有试过用sed一段一段的来截出来的,比较麻烦.
读取指定行的函数:
$ cat getline.sh
#!/bin/sh
line_number=$1
infile=$2
curline=0
while [ $curline -lt $line_number ] && read line; do
curline=`expr $curline + 1`
done < $infile
echo $line
用法:
./getline 5 youfile (显示youfile中的第五行) |
|