当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 13 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 11:46 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
不能用sed,awk,不进行额外的文件操作(不新建文件包括FIFO,修改文件)

这个文件的每一行都有空格(或tab)

例如:
代码:
abc   12112  89898
hfjdskhjh iuiuiui 75678
hjhkhu 8786876 09090 GHGJKHjk
GghTGJHB ^&*()())_       hjhkj


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 12:09 
头像

注册: 2007-09-29 3:09
帖子: 5773
送出感谢: 0 次
接收感谢: 3
xiooli貌似有过相关问题...不知解决没有...


_________________
HUNT Unfortunately No Talent...


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 12:25 
头像

注册: 2006-05-19 21:42
帖子: 184
地址: NIT
送出感谢: 0 次
接收感谢: 0 次
while read a
do
echo $a
done < file


最后由 alinmn 编辑于 2008-09-24 12:33,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 12:28 
头像

注册: 2005-12-07 0:17
帖子: 476
地址: 昆明
送出感谢: 0 次
接收感谢: 0 次
cat ttt.txt
abc 12112 89898
hfjdskhjh iuiuiui 75678
hjhkhu 8786876 09090 GHGJKHjk
GghTGJHB ^&*()())_ hjhkj

bash

cat ttt | while read oneline; do echo $oneline; done;
运行结果
abc 12112 89898
hfjdskhjh iuiuiui 75678
hjhkhu 8786876 09090 GHGJKHjk
GghTGJHB ^&*()())_ hjhkj


_________________
Two wrongs do not make a right.
blog: http://hi.baidu.com/bookpage


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 13:04 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
HuntXu 写道:
xiooli貌似有过相关问题...不知解决没有...


我是把空格先用特殊字符替换掉,用的时候再删除特殊字符。 :em06


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 13:08 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
哦,lz的这个还不一样,我的是把每行存到一个数组里面去,有空格的话一行就变成几个元素了。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 15:20 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
xiooli 写道:
HuntXu 写道:
xiooli貌似有过相关问题...不知解决没有...


我是把空格先用特殊字符替换掉,用的时候再删除特殊字符。 :em06

这个方法不错,但要保证文件中没有那些字符。。。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 15:25 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
xiooli 写道:
哦,lz的这个还不一样,我的是把每行存到一个数组里面去,有空格的话一行就变成几个元素了。

我曾想用IFS解决这个问题。

就不知道
代码:
cat xxx|while read sss do :done

回补会在文件尾巴处停下来,IFS会不会影响他


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 16:54 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
alinmn, suncanoe, 你们的方法是对的,谢谢了,证明我的担心是多余的。。

----------------
手册页: One line is read from the standard input, or from the file
descriptor fd supplied as an argument to the -u option, and the
first word is assigned to the first name, the second word to the
second name, and so on, with leftover words and their interven-
ing separators assigned to the last name. If there are fewer
words read from the input stream than names, the remaining names
are assigned empty values. The characters in IFS are used to
split the line into words. The backslash character (\) may be
used to remove any special meaning for the next character read
and for line continuation. Options, if supplied, have the fol-
lowing meanings:
----
翻译过来就是,read每次读取一行,给跟在后面的变量,如果变量数不够就把剩下的全给最后一个变量。这样就把一行赋值给一个变量了,但read为什么会在EOF处停住手册页貌似没说……


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 19:29 
头像

注册: 2006-05-19 21:42
帖子: 184
地址: NIT
送出感谢: 0 次
接收感谢: 0 次
我原来写的就是改IFS的,不过后来发现不必要
要改的话可以这样
OLDIFS=$IFS
IFS=$'\n'
...
IFS=$OLDIFS


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-09-24 19:38 
头像

注册: 2006-05-19 21:42
帖子: 184
地址: NIT
送出感谢: 0 次
接收感谢: 0 次
我原来写的就是改IFS的,不过后来发现不必要
要改的话可以这样
OLDIFS=$IFS
IFS=$'\n'
...
IFS=$OLDIFS


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-10-01 14:01 
头像

注册: 2007-12-25 12:51
帖子: 231
送出感谢: 0 次
接收感谢: 0 次
先改 IFS=$'\n'
然后 array=(`cat filename`)。


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 【问题】将文本文件的每一行存到一个变量中。
帖子发表于 : 2008-10-02 0:34 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
也可以用head和tail结合起来做嘛


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 13 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译