免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: shichunda
打印 上一主题 下一主题

awk输出单引号 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-04-19 09:56 |只看该作者
回复 10# where27


    可以这么理解把。。。

论坛徽章:
0
12 [报告]
发表于 2010-04-19 10:07 |只看该作者
回复 10# where27


    应该是bash在等一个“
  1. [oracle@s12071 ~]$ echo "ll" | awk '{print "\'"}'
  2. > ;
  3. > -bash: unexpected EOF while looking for matching `"'
  4. -bash: syntax error: unexpected end of file
  5. [oracle@s12071 ~]$ echo "ll" | awk '{print "\'"}'
  6. > "
  7. awk: cmd. line:1: {print "\}'
  8. awk: cmd. line:1:        ^ unterminated string
  9. [oracle@s12071 ~]$
复制代码
第一次没法结束于是小弟按了个Ctrl+D 就出现了
-bash: unexpected EOF while looking for matching `"'
-bash: syntax error: unexpected end of file
可见bash应该是
把awk '{print "\'"}'分成了
'{print "\' 和”}’这两部分 而后面这一部分引号没有配对所以bash就一直等待你输入“结束
然后 交给awk处理。。。。

论坛徽章:
0
13 [报告]
发表于 2010-04-19 10:55 |只看该作者
回复 12# lkk2003rty


    恩,明白了,跟黑哥讲的一样,谢谢!

论坛徽章:
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
14 [报告]
发表于 2010-04-19 13:13 |只看该作者
回复 8# where27


    单引号中不能使用',即使转义也不行。

论坛徽章:
0
15 [报告]
发表于 2010-04-19 13:24 |只看该作者
回复 14# blackold


    哦,原来是这样,谢谢黑哥

论坛徽章:
0
16 [报告]
发表于 2010-04-19 15:04 |只看该作者
非常感谢各位,晚上好好看看各位的回复,抽时间回了个帖子,太忙了呵呵

论坛徽章:
0
17 [报告]
发表于 2010-04-19 20:42 |只看该作者
回复  shichunda


    这是shell的问题。
'{print " '\'' "}'是三个引用:
'{print " '
\'
' "}'
...
blackold 发表于 2010-04-18 22:52



    说的很详细,小弟在此拜上

论坛徽章:
0
18 [报告]
发表于 2010-04-19 20:57 |只看该作者
说起这个转义符号,我想起了这个:
awk '{print "the awk programming language" ,'\$1', "YES"}' 1.test

输出:
the awk programming language AAA YES
the awk programming language BBB YES
the awk programming language ABA YES

问题一:
按照黑哥的指教,应该分解为这样:
awk '{print "the awk programming language" ,'
\$1
', "YES"}'
shell进行解释之后传给awk时,awk看到的是这样的:{print "the awk programming language" ,$1,"YES"}
这样的吧?

问题二:
这里的\$1,意思是$被\转义后只是当作普通的字符$,而不是当作shell中的$1,因为shell中的$1是代表第一个参数,如果你写成awk '{print "the awk programming language" ,'$1', "YES"}' 1.test,那shell就认为$1是他的第一个参数了。我这样理解对吗?
还有,我们平时输入的awk '{print $1}' xx.file这种形式,实际上是在shell中用''把单引号中的{、$、}都给转义成为普通的字符了,这样理解对吗?

论坛徽章:
0
19 [报告]
发表于 2010-04-20 18:01 |只看该作者
dingqilai

论坛徽章:
0
20 [报告]
发表于 2010-04-21 13:55 |只看该作者
这两天没人看着帖子了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP