免费注册 查看新帖 |

Chinaunix

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

[文本处理] bash环境,声明变量ip="10.1.21.36",awk中打印该变量时值却变了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-23 09:48 |只看该作者 |倒序浏览
代码大致如下

ip="10.1.21.36"

echo "something" | awk 'BEGIN{msg[1]='$ip'} {print msg[1]}'

输出结果是:10.10.210.36

请问是什么原因,难不成当作是正则表达式了?

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
2 [报告]
发表于 2013-07-23 10:25 |只看该作者
  1. echo "something" | awk 'BEGIN{msg[1]="'$ip'"} {print msg[1]}'
复制代码

论坛徽章:
1
技术图书徽章
日期:2013-09-25 21:06:29
3 [报告]
发表于 2013-07-23 10:40 |只看该作者
回复 2# WilliBhamlll


为什么要这样呢?   

论坛徽章:
0
4 [报告]
发表于 2013-07-23 10:55 |只看该作者
可以直接用双引号替换掉单引号吧

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
5 [报告]
发表于 2013-07-23 10:59 |只看该作者
回复 3# yuloveban


    awk引用shell变量就是这样嘛
    还可以:
  1. echo "something" | awk -vvar=$ip '{msg[1]=var}{print msg[1]}'
复制代码

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
6 [报告]
发表于 2013-07-23 11:28 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
7 [报告]
发表于 2013-07-23 11:59 |只看该作者
回复 6# zooyo

这个贴子好,学习了~
   

论坛徽章:
0
8 [报告]
发表于 2013-07-23 14:03 |只看该作者
WilliBhamlll 发表于 2013-07-23 10:25


后来试了试,确实用双引号再括以下就可以了,用双引号括以下就表示是作为字符串处理了。
如果不加双引号,就默认是作为浮点数处理的吧。

论坛徽章:
0
9 [报告]
发表于 2013-07-23 14:05 |只看该作者
zooyo 发表于 2013-07-23 11:28
http://bbs.chinaunix.net/thread-289001-1-1.html



嗯,貌似解释挺合理的,哈哈

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
10 [报告]
发表于 2013-07-23 16:19 |只看该作者
好牛掰啊!学习了!

由于写成了$1=1.2.3.4,所以awk认为$0,在本例里也就是$1的值为1.2.3.4,而1.2.3.4不是一个数字,awk再进一步解释为1.2和0.3和0.4,显示结果还不以空格分开,所以显示1.20.30.4
应该是这样吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP