找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22118|回复: 4

[问题求助] gawk中如何以字段为变量名?

[复制链接]
发表于 2009-6-3 04:30:09 | 显示全部楼层 |阅读模式
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 编辑 ]
发表于 2009-6-3 08:16:04 | 显示全部楼层
建议在Shell版块进行讨论
 楼主| 发表于 2009-6-3 18:23:25 | 显示全部楼层
求得一答案,但有几处不解,谁懂的麻烦解答下,先谢了!!
for 中 v 右边的两个引号有什么作用?发现去掉也能正确运行。
问号在这里起什么作用?看帮助里说是 左边的字符重复0到1次,本例中有何作用?
冒号是干什么的?右边的两个引号有什么用?
总的来说对(v?" ":"")整句的作用不理解,发现不要也行。
改为 for (j=1;j<=n;j+=1) v=v " " b[j]"="a[b[j]]  结果也正确。迷惑中~~
原始答案:
  1. $1~/^[abfh]$/ {
  2.     n+=1;b[n]=$1;a[$1]=$2
  3. }
  4. END{
  5.    for (j=1;j<=n;j+=1) v=v""(v?" ":"")b[j]"="a[b[j]]
  6.    print v
  7. }
复制代码

[ 本帖最后由 随风 于 2009-6-3 18:25 编辑 ]
发表于 2009-6-5 21:07:16 | 显示全部楼层
没人来啊
是不是 去前面空格的啊
随风兄看是否 像正则表达的样子
练手一个  这样也可
  1. $1~/^[abfh]$/ {
  2.     n++;b[n]=$1"="$2" "
  3. }
  4. END{
  5.    for (j=1;j<=n;j+=1) v=v b[j]
  6.    print v
  7. }
复制代码
 楼主| 发表于 2009-6-5 21:57:26 | 显示全部楼层

回复 4楼 的帖子

论坛好像研究 gawk 的不多,我也是三天新鲜,用他还是没脱离bat 的思路,感觉就是另一个cmd而以,里面的函数应该很有用,不过没用过 (^_^)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:09 , Processed in 0.015737 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表