免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 中 unterminated string 错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-31 10:57 |只看该作者 |倒序浏览
awk '{if(NR<=33)print $0;else{f=!f;if(f)printf("%s",$0);else printf("\t%s\n",$0)}}' red.txt > test.txt

在本地运行没有错,但是用在python程序中就报错了

cmd="awk '{if(NR<=33)print $0;else{f=!f;if(f)printf(\"%%s\",$0);else printf(\"\t%%s\n\",$0)}}' %s > %s" %(infile,outfile)
os.system(cmd)

错误如下:
awk: {if(NR<=33)print $0;else{f=!f;if(f)printf("%s",$0);else printf("   %s
awk:                                                                ^ unterminated string


论坛徽章:
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
2 [报告]
发表于 2012-07-31 11:00 |只看该作者
查python文档。

论坛徽章:
0
3 [报告]
发表于 2012-07-31 11:06 |只看该作者
以下只是个建议,对python也不太熟。。

使用三引号('''或""")
利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。例如:

'''This is a multi-line string. This is the first line.
This is the second line.
"What's your name?," I asked.
He said "Bond, James Bond."
'''

论坛徽章:
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
4 [报告]
发表于 2012-07-31 11:07 |只看该作者
回复 3# lxb456900


    那你来这里干什么?

论坛徽章:
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
5 [报告]
发表于 2012-07-31 11:10 |只看该作者
回复 3# lxb456900


    既然用 python 调用awk ,说明对 python 应该有所了解,另外从LZ反映的情况来看,应该是python的问题,而不是awk的问题,所以我就这么说了。

论坛徽章:
0
6 [报告]
发表于 2012-07-31 11:15 |只看该作者
回复 3# lxb456900


    授人以鱼不如授人以渔。
在这里讨论,总是不鼓励拿来主义的;
给出解决的途径,思路,方法,比直接给结果好
很多问题都是基础,是基础,自己去翻翻文档总是有好处的,是学习的过程
大家来这边更多的总是喜欢讨论一些比基础稍微高一点点的问题的吧
你这回复也不见得能解决啥问题嘛
大家都是志愿者,没啥酬劳的,也没有必须帮别人解决问题的责任

论坛徽章:
0
7 [报告]
发表于 2012-07-31 11:23 |只看该作者
回复 4# personball


    我在这里问这个问题主要是想请教awk中的unterminated string是什么原因导致的,然后才能在python中进行相应的修改,望不吝赐教
   
   

论坛徽章:
0
8 [报告]
发表于 2012-07-31 11:26 |只看该作者
三引号试过,不行

论坛徽章:
0
9 [报告]
发表于 2012-07-31 11:26 |只看该作者
回复 10# ganhykk


    = =我的意思就是你给python的变量赋值字符串时直接用三引号,这样字符串里的单双引号就可以随便用了,你先试试呗。。。我对python不太了解,就稍微看过一部份语法。。。

论坛徽章:
0
10 [报告]
发表于 2012-07-31 11:30 |只看该作者
回复 12# personball


    不知道我理解错了没,我是这样写的
cmd='''awk '{if(NR<=33)print $0;else{f=!f;if(f)printf("%%s",$0);else printf("\t%%s\n",$0)}}' %s > %s ''' %(infile,outfile)

结果不行

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP