免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4566 | 回复: 16

关于GNU Awk 3.1.5的一个问题 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
发表于 2009-06-11 11:41 |显示全部楼层
碰到这么一个问题,在RHEL5上运行如下命令得到结果:

$ echo "AAAAAAaBBBBBBBBBbc"|awk '{gsub(/[A-Z][a-z]?/,"&,");print $0}'
AA,AA,AA,aBB,BB,BB,BB,Bb,c,


这个结果看不明白,于是换了其他系统来跑这句命令:

AIX:
$ echo "AAAAAAaBBBBBBBBBbc"|awk '{gsub(/[A-Z][a-z]?/,"&,");print $0}'
A,A,A,A,A,Aa,B,B,B,B,B,B,B,B,Bb,c


Solaris:
$ echo "AAAAAAaBBBBBBBBBbc"|nawk '{gsub(/[A-Z][a-z]?/,"&,");print $0}'
A,A,A,A,A,Aa,B,B,B,B,B,B,B,B,Bb,c


可以看到AIX和Solaris的结果是一样的,而与RHEL5上的GNU Awk 3.1.5得到的结果大相径庭,这是怎么回事?

论坛徽章:
0
发表于 2009-06-11 11:48 |显示全部楼层
在RHEL4上沒問題。RHEL5沒環境。
linux</root>#cat /etc/redhat-release
Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
linux</root>#echo "AAAAAAaBBBBBBBBBbc"|awk '{gsub(/[A-Z][a-z]?/,"&,");print $0}'
A,A,A,A,A,Aa,B,B,B,B,B,B,B,B,Bb,c
linux</root>#

论坛徽章:
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
发表于 2009-06-11 11:52 |显示全部楼层

回复 #1 Minsic 的帖子

其它的awk是什么版本?

论坛徽章:
0
发表于 2009-06-11 11:57 |显示全部楼层
locale的问题。

  1. [root]# echo "AAAAAAaBBBBBBBBBbc"|(LANG=C;awk '{gsub(/[A-Z][a-z]?/,"&,");print $0}')
  2. A,A,A,A,A,Aa,B,B,B,B,B,B,B,B,Bb,c

  3. [root]# echo "AAAAAAaBBBBBBBBBbc"|awk '{gsub(/[A-Z][a-z]?/,"&,");print $0}'
  4. AA,AA,AA,aBB,BB,BB,BB,Bb,c,
复制代码

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
发表于 2009-06-11 12:00 |显示全部楼层
原帖由 kwokcn 于 2009-6-11 11:57 发表
locale的问题。

[root]# echo "AAAAAAaBBBBBBBBBbc"|(LANG=C;awk '{gsub(/[A-Z][a-z]?/,"&,");print $0}')
A,A,A,A,A,Aa,B,B,B,B,B,B,B,B,Bb,c

[root]# echo "AAAAAAaBBBBBBBBBbc"|awk '{gsub(/[A-Z][a- ...


啊,果然,感谢

谢谢各位关注我这个愚蠢的问题

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
发表于 2009-06-11 12:02 |显示全部楼层

回复 #3 blackold 的帖子

粗略翻了下其他几个系统上awk/nawk的man,居然没发现有可以打印awk版本的选项 - -

不过主题帖的问题4楼的已经解答了……

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
发表于 2009-06-11 12:10 |显示全部楼层
蛮奇怪的,solaris10上的locale设置并不影响这句awk命令的结果:

$ echo $LANG
C
$ locale -a |grep zh
zh
zh.GBK
zh.UTF-8
zh_CN.EUC
zh_CN.GBK
zh_CN.UTF-8
zh_CN.GB18030
zh_CN.EUC@pinyin
zh_CN.EUC@radical
zh_CN.EUC@stroke
zh_CN.GB18030@pinyin
zh_CN.GB18030@radical
zh_CN.GB18030@stroke
zh_CN.GBK@pinyin
zh_CN.GBK@radical
zh_CN.GBK@stroke
zh_CN.UTF-8@pinyin
zh_CN.UTF-8@radical
zh_CN.UTF-8@stroke
$ LANG=zh.UTF-8
$ echo "AAAAAAaBBBBBBBBBbc"|nawk '{gsub(/[A-Z][a-z]?/,"&,");print $0}'
A,A,A,A,A,Aa,B,B,B,B,B,B,B,B,Bb,c
$

论坛徽章:
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
发表于 2009-06-11 12:11 |显示全部楼层
没碰到过。

论坛徽章:
0
发表于 2009-06-11 14:29 |显示全部楼层
原帖由 Minsic 于 2009-6-11 12:10 发表
蛮奇怪的,solaris10上的locale设置并不影响这句awk命令的结果:


export LANG,再试试

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
发表于 2009-06-11 14:41 |显示全部楼层

回复 #9 jinl 的帖子

LANG原本就已经export了,再次export干嘛?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP