Chinaunix

标题: 从文件中提取数组文件 [打印本页]

作者: lunaest    时间: 2015-07-07 11:31
标题: 从文件中提取数组文件
有一个文件a.txt
里面的内容是
data 123 456 789
我想写一个脚本提取这个a.txt里的文件,并且让它成为数组
也就是说在脚本里
data=(123 456 789)
data[0]=123
data[1]=456
data[2]=789
我写的是
file=$1 ($1在执行的时候读取的是a.txt)
data=$(awk '$1 ~ /data/ {$1"";print}' $file)
a=${data[0]}
b=${data[1]}
c=${data[3]}
可是读不出a,b,c
作者: 关阴月飞    时间: 2015-07-07 11:39
本帖最后由 关阴月飞 于 2015-07-07 11:44 编辑
  1. eval `awk '{print $1"=("$2,$3,$4")"}' urfile`
复制代码

作者: reyleon    时间: 2015-07-07 11:44
本帖最后由 reyleon 于 2015-07-07 11:44 编辑

file=$1
data=( $(awk '$1 ~ /data/ {$1="";print}' $file) )
a=${data[0]}
b=${data[1]}
c=${data[2]}
作者: lunaest    时间: 2015-07-07 11:45
回复 2# 关阴月飞


    实际文件可能不只有三组数,我要一行的数据怎么办?
作者: 关阴月飞    时间: 2015-07-07 11:47
回复 4# lunaest
  1. eval `awk '{a=$1;$1=pf;print a"=("$0")"}' urfile`
复制代码

作者: lunaest    时间: 2015-07-07 11:49
回复 3# reyleon

好像不行,输出的a,b,c都是123

   
作者: reyleon    时间: 2015-07-07 12:00
  1. [root@tt ~]# cat a.txt
  2. data 123 456 789
  3. [root@tt ~]# sh t.sh a.txt
  4. a=123
  5. b=456
  6. c=789
  7. [root@tt ~]# cat t.sh
  8. #!/bin/bash
  9. file=$1
  10. data=( $(awk '$1 ~ /data/ {$1="";print}' $file) )
  11. a=${data[0]}
  12. b=${data[1]}
  13. c=${data[2]}
  14. echo a=$a
  15. echo b=$b
  16. echo c=$c
复制代码

作者: jason680    时间: 2015-07-07 12:49
本帖最后由 jason680 于 2015-07-07 12:50 编辑

回复 1# lunaest

这不是(真正的)问题  是Y,说说X(真正的问题)吧!

http://bbs.chinaunix.net/thread-4138810-1-1.html


作者: lunaest    时间: 2015-07-07 13:47
回复 7# reyleon
谢谢啦,之前输出有误

   
作者: lunaest    时间: 2015-07-07 13:48
回复 7# reyleon
还有一点不明白,为什么echo $data 出来的是123 ?

   
作者: reyleon    时间: 2015-07-07 14:42
回复 10# lunaest


    http://bbs.chinaunix.net/thread-4118053-1-1.html
作者: lunaest    时间: 2015-07-07 14:58
回复 11# reyleon

其实要问的问题就是这个,最后那个算是个附加问题,这个帖子也不是完全有道理,很多时候大家想把问题简化了,也是出于给别人节省时间的考虑,就算是给了你X,还是会有一个普遍适用的问题,比如我想问你怎么处理a文件,我把a文件原本复制贴上来,但b文件的情况有所不同,还是要再问一遍不是吗?   
最后谢谢你回答了我的提问
作者: 聆雨淋夜    时间: 2015-07-09 00:06
回复 5# 关阴月飞
$1=pf是啥意思啊


   
作者: hjfeng1988    时间: 2015-07-09 09:14
回复 13# 聆雨淋夜


    把$1置空
作者: 聆雨淋夜    时间: 2015-07-09 18:17
回复 14# hjfeng1988
涨见识


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2