[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

TOP

没人来啊
是不是 去前面空格的啊
随风兄看是否 像正则表达的样子
练手一个  这样也可
  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. }
复制代码

TOP

回复 4楼 的帖子

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

TOP

返回列表