返回列表 发帖

[问题求助] 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 编辑 ]
技术问题请到论坛发帖求助!

建议在Shell版块进行讨论
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

求得一答案,但有几处不解,谁懂的麻烦解答下,先谢了!!
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
}COPY

[ 本帖最后由 随风 于 2009-6-3 18:25 编辑 ]
技术问题请到论坛发帖求助!

TOP

没人来啊
是不是 去前面空格的啊
随风兄看是否 像正则表达的样子
练手一个  这样也可
$1~/^[abfh]$/ {
    n++;b[n]=$1"="$2" "
}
END{
   for (j=1;j<=n;j+=1) v=v b[j]
   print v
}COPY

TOP

回复 4楼 的帖子

论坛好像研究 gawk 的不多,我也是三天新鲜,用他还是没脱离bat 的思路,感觉就是另一个cmd而以,里面的函数应该很有用,不过没用过 (^_^)
技术问题请到论坛发帖求助!

TOP

返回列表