LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1780|回复: 10

怎样在一个文件中读一个值给变量?

[复制链接]
发表于 2003-4-22 14:42:24 | 显示全部楼层 |阅读模式
例如我有一个文件line的内容是: 6  jor
现在我想提取里面的 6 给一个变量 loop 以供它用.
读问怎么样实现?
在SHELL编程下.
我试过 loop=more line 不行
          loop=less line 也不行
发表于 2003-4-22 16:37:34 | 显示全部楼层
read loop foo < line
echo $loop
 楼主| 发表于 2003-4-22 17:04:40 | 显示全部楼层
哇!!我成功了!!多谢多谢多谢.........
但有一处不明的就是这个 foo 是什么来的?有什么作用?
真不好意思,麻烦你了.
发表于 2003-4-22 17:08:57 | 显示全部楼层
二楼说的有问题吧~~
一楼的意思是不是取文件中特定的信息,然后在程序中调用,如果是那样的话,可以通过先查找特定字符串,再赋值给变量.查找特定字符串用grep就可以呀!
 楼主| 发表于 2003-4-22 17:18:16 | 显示全部楼层
但我用二楼的方法成功了.
但如果是用grep查找特定字符串的话,对我这个文件来说并不方便,因为这个数字不固定的.
我现在又有了另一个问题了:如何读一个文件的某一行出来?例如我想读文件的第5行出来,用什么命令会比较方便呢?我有试过用sed一段一段的来截出来的,比较麻烦.
发表于 2003-4-22 17:26:14 | 显示全部楼层
第一个问题我有些置疑,我再研究研究吧~
第二个用sed -n '5p' filename #显示第5行.
 楼主| 发表于 2003-4-22 17:47:07 | 显示全部楼层
很感谢,这二个问题我都解决了.多谢两位.
 楼主| 发表于 2003-4-22 19:30:52 | 显示全部楼层
又有问题了,哎,真不好意思,都怪sed方面的资料少呀!!
如 sed -n '5p' filename
如果我想动态改变这个行数,那这条命令应该如何写呢?
我试过这样 sed -n '$a''p' filename 行不通。
发表于 2003-4-22 22:00:24 | 显示全部楼层
发表于 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中的第五行)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表