免费注册 查看新帖 |

Chinaunix

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

这个教本为何 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-11 14:55 |只看该作者 |倒序浏览
有数据aaabbc要转变为aaa01cbb

awk '{x=substr($1,1,3);y=substr($1,4,2);z=substr($1,6,1);q="01"}
     {printf("%s\n",$x$q$z$c)}'
为何语法报错

论坛徽章:
0
2 [报告]
发表于 2008-04-11 15:06 |只看该作者
awk '{x=substr($1,1,3);y=substr($1,4,2);z=substr($1,6,1);q="01";printf "%s%s%s%s\n",x,q,z,c }'

论坛徽章:
0
3 [报告]
发表于 2008-04-11 15:16 |只看该作者

  1. echo -n 'aaabbc'|gawk 'BEGIN{FS="";FIELDWIDTHS="3 2 1 1"}{print $1"01"$3""$2}'

复制代码

论坛徽章:
0
4 [报告]
发表于 2008-04-11 15:21 |只看该作者
这样还是不行,好像报错在substr上

论坛徽章:
0
5 [报告]
发表于 2008-04-11 15:26 |只看该作者
awk '{x=substr($1,1,3);y=substr($1,4,2);z=substr($1,6,1);q="01";printf "%s%s%s%s\n",x,q,z,y }'

论坛徽章:
0
6 [报告]
发表于 2008-04-11 15:30 |只看该作者
昏,davistar 老大的太深熬了,来个简单一些的
数据有好多行的,每一行单一一个数据项,要不要设置什么输出服之类的

论坛徽章:
0
7 [报告]
发表于 2008-04-11 15:43 |只看该作者
原帖由 jobbie1230 于 2008-4-11 15:21 发表
这样还是不行,好像报错在substr上

substr 没有错
错在 awk 里的变量不用$
下面这个试下,你的条件说的不是很清楚
awk '{x=substr($1,1,3);y=substr($1,4,2);z=substr($1,6,1);q="01";printf "%s%s%s%s\n",x,q,z,y }'

论坛徽章:
0
8 [报告]
发表于 2008-04-11 15:53 |只看该作者
呵呵,知道了
多了个$
也不知道什么时候用,什么时候不用

论坛徽章:
0
9 [报告]
发表于 2008-04-11 16:01 |只看该作者
外部环境变量可以用 用单引号挂起来 '$var'
awk '{print '$var'}'
还有外部环境变量非数字的变量
awk -v var=$var `{print var}`

不知道对不对,望高手指正

[ 本帖最后由 liujuejun 于 2008-4-11 16:06 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-04-11 20:03 |只看该作者
原帖由 liujuejun 于 2008-4-11 16:01 发表
外部环境变量可以用 用单引号挂起来 '$var'
awk '{print '$var'}'
还有外部环境变量非数字的变量
awk -v var=$var `{print var}`

不知道对不对,望高手指正

awk的自定义变量不要$,字段变量要用$,shell的变量要在awk里面使用 "'$var'"

上面那个处理可以这样简化一下printf的参数
awk '{x=substr($1,1,3);y=substr($1,4,2);z=substr($1,6,1);q=x"01"z""y;print q }'

[ 本帖最后由 jinl 于 2008-4-11 20:04 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP