免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1983 | 回复: 9
打印 上一主题 下一主题

gawk 中如何以字段为变量名 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-03 16:22 |只看该作者 |倒序浏览
请问 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



[ 本帖最后由 26933062 于 2009-6-3 16:52 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2009-06-03 16:24 |只看该作者

回复 #1 26933062 的帖子

为什么要在END里面显示?

论坛徽章:
0
3 [报告]
发表于 2009-06-03 16:26 |只看该作者
awk '{if ( $1 == $2)  print  a, b} file


$1, $2本来就是变量

论坛徽章:
0
4 [报告]
发表于 2009-06-03 16:26 |只看该作者
用数组下标多好

论坛徽章:
0
5 [报告]
发表于 2009-06-03 16:34 |只看该作者

回复 #3 signmem 的帖子

$1﹐$2并非awk的變量﹐而是內建的field number,awk的自身變量不用加$

论坛徽章:
0
6 [报告]
发表于 2009-06-03 16:46 |只看该作者
可能是这样的需求,囧了...
awk '{a[$1]=$2}END{for (j in a) print j,a[j]}' file

论坛徽章:
0
7 [报告]
发表于 2009-06-03 16:55 |只看该作者
谢谢各位,以在顶楼补充说明题意。
正在研究6楼代码中。。。。

论坛徽章:
0
8 [报告]
发表于 2009-06-03 17:03 |只看该作者
6楼代码看不懂,对 {for (j in a) print j,a[j]} 这种for循环不理解
论坛中的手册好像也没看到对这种for的解释
我只知道 {for (i=1;i<=3;i++)print i} 这样for的流程
谁能解释下6楼的for工作流程么?或是给个教程地址,谢谢了!

论坛徽章:
0
9 [报告]
发表于 2009-06-03 17:07 |只看该作者

回复 #8 26933062 的帖子

对顺序没要求的话
[root@Mylinux tmp]# awk '$1~/^[abfh]$/{a[$1]=$2}END{for (j in a) v=v""(v?"&":"")j"="a[j];print v}' file
h=333&a=1234&b=5678&f=000

对顺序有要求的话
[root@Mylinux tmp]# awk '$1~/^[abfh]$/{n++;b[n]=$1;a[$1]=$2}END{for (j=1;j<=n;j++) v=v""(v?"&":"")b[j]"="a[b[j]];print v}' file      
a=1234&b=5678&f=000&h=333

教程就是置顶贴

[ 本帖最后由 ywlscpl 于 2009-6-3 17:15 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-06-03 17:51 |只看该作者

回复 #9 ywlscpl 的帖子

谢谢,回去慢慢研究,再次感谢大家!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP