标题: [问题求助] gawk中如何以字段为变量名? [打印本页]
作者: 随风 时间: 2009-6-3 04:30 标题: gawk中如何以字段为变量名?
gawk 中如何以字段为变量名
a.txt内容就2行
a b
c d
我希望设变量 a=b c=d,并且是END后面显示
即:第一字段为变量名,第二字段为变量的值,该怎么作?
我用下面的代码结果不对
gawk "{$1=$2}END{print a,b}" a.txt
补充说明
a.txt 内容行的位置不确定
a 1234 ldksjfa
e adfja
t 73748357 dsfadsfa
b 5678 dsfdsaf
f 000 fefdsf
afa fdsafjafu
h 333
uus 9564
需要显示的效果为一行,顺序不能变 a=1234 b=5678 h=333 f=000
.
.
[ 本帖最后由 随风 于 2009-6-3 18:08 编辑 ]
作者: Batcher 时间: 2009-6-3 08:16
建议在Shell版块进行讨论
作者: 随风 时间: 2009-6-3 18:23
求得一答案,但有几处不解,谁懂的麻烦解答下,先谢了!!
for 中 v 右边的两个引号有什么作用?发现去掉也能正确运行。
问号在这里起什么作用?看帮助里说是 左边的字符重复0到1次,本例中有何作用?
冒号是干什么的?右边的两个引号有什么用?
总的来说对(v?" ":"")整句的作用不理解,发现不要也行。
改为 for (j=1;j<=n;j+=1) v=v " " b[j]"="a[b[j]] 结果也正确。迷惑中~~
原始答案:- $1~/^[abfh]$/ {
- n+=1;b[n]=$1;a[$1]=$2
- }
- END{
- for (j=1;j<=n;j+=1) v=v""(v?" ":"")b[j]"="a[b[j]]
- print v
- }
复制代码
[ 本帖最后由 随风 于 2009-6-3 18:25 编辑 ]
作者: terse 时间: 2009-6-5 21:07
没人来啊
是不是 去前面空格的啊
随风兄看是否 像正则表达的样子
练手一个 这样也可- $1~/^[abfh]$/ {
- n++;b[n]=$1"="$2" "
- }
- END{
- for (j=1;j<=n;j+=1) v=v b[j]
- print v
- }
复制代码
作者: 随风 时间: 2009-6-5 21:57 标题: 回复 4楼 的帖子
论坛好像研究 gawk 的不多,我也是三天新鲜,用他还是没脱离bat 的思路,感觉就是另一个cmd而以,里面的函数应该很有用,不过没用过 (^_^)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |