Board logo

标题: [问题求助] [已解决]gawk单引号、双引号的使用:双引号为何需要转义? [打印本页]

作者: zhouyongjun    时间: 2010-4-8 17:52     标题: [已解决]gawk单引号、双引号的使用:双引号为何需要转义?

gawk教学内容见此贴:http://bbs.bathome.net/thread-3997-1-1.html
下面问题来源此贴,测试文本内容如下:
shipped.txt

Jan 13 25 15 115
Feb 15 32 24 226
Mar 15 24 34 228
Apr 31 52 63 420
May 16 34 29 208 J
un 31 42 75 492
Jul 24 34 67 436
Aug 15 34 47 316
Sep 13 55 37 277
Oct 29 54 68 525
Nov 20 87 82 577
Dec 17 35 61 401
Jan 21 36 64 620
Feb 26 58 80 652
Mar 24 75 70 495
Apr 21 70 74 514

问题为:求第一栏为Feb时,第二栏与第三栏的和。
示例代码如下:
  1. gawk '$1 == "Feb" {sum=$2+$3} END {print sum}' shipped
复制代码
上面代码而我并不能成功运行,而是返回错误信息。
把代码改为下面形式,则可:
  1. gawk "$1 == \"Feb\" {sum=$2+$3} END {print sum}" shipped.txt
复制代码
问题出来了:
1.教程及其他地方找的资料都说gawk后面句子需在一对单引号之内,而我测试偏偏单引号不行而要改为双引号,不知何因?
2.双引号明明不是gawk里交代的特殊字符,却需要转义才能得到正确结果,更加迷惑!

[ 本帖最后由 zhouyongjun 于 2010-4-8 18:09 编辑 ]
作者: hanyeguxing    时间: 2010-4-8 17:59

教程是在linux的说明,在xp等系统下,要把单引号换成双引号,原来的双引号前面加\。其他文本处理命令如sed等也是这样。
作者: zhouyongjun    时间: 2010-4-8 18:06     标题: 回复 2楼 的帖子

谢谢,我搜到了,正如你所说。
作者: xslxslxsl    时间: 2011-9-21 14:45

长见识了,的确是这样,方便我这样的新手学习哦,呵呵楼主的问题问的也很好哦




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2