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 编辑
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
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
[root@tt ~]# cat a.txt
data 123 456 789
[root@tt ~]# sh t.sh a.txt
a=123
b=456
c=789
[root@tt ~]# cat t.sh
#!/bin/bash
file=$1
data=( $(awk '$1 ~ /data/ {$1="";print}' $file) )
a=${data[0]}
b=${data[1]}
c=${data[2]}
echo a=$a
echo b=$b
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