免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 中 "\t"为什么一定要双引号。。。。 [复制链接]

论坛徽章:
11
射手座
日期:2015-08-11 16:10:26辰龙
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
11 [报告]
发表于 2015-07-04 08:59 |只看该作者
本帖最后由 hjfeng1988 于 2015-07-04 09:00 编辑

这是龟腚,因为\在bash里面有特殊的含义,所以不能直接
  1. echo \t
复制代码
来打印一个tab符
单引号里面的\不会被当成转义符,双引号才会。
龟腚龟腚龟腚,重要的事说三遍,就好像有人问为什么要取名awk,而不叫kwa

评分

参与人数 1信誉积分 +5 收起 理由
substr函数 + 5 龟腚很给力! 赞一个!

查看全部评分

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
12 [报告]
发表于 2015-07-05 19:06 |只看该作者
awk中使用\t还是使用printf格式化打印的好~

论坛徽章:
2
2015年亚冠纪念徽章
日期:2015-07-05 23:06:04IT运维版块每日发帖之星
日期:2015-07-06 22:20:00
13 [报告]
发表于 2015-07-05 22:37 |只看该作者
本帖最后由 .Victor 于 2015-07-05 23:03 编辑

首先,13Q还是没仔细看,没认真领会。罚抄100遍
有一点,SHELL会先预处理你输入的命令,所以最后AWK收到的内容并不是你想到的
下面只看AWK后面的内容
no.1:   "{print \$1 "\t" \$3}"
你这里有两组引号,所以整体来看是3段
"{print \$1 "
\t
" \$3}"
所以对AWK来说,他接收到的信息是
{print $1 $3}
$1和$3中间有空格和TAB,但对最终的输出没有影响
no.2:  "{print \$1 \"\t\" \$3}"
双引号经过转义,AWK接收到的是
{print $1 "这里是一个TAB" $3}

no.3:  '{print $1 "\t" $3}'
单引号内不转义直接传给了AWK

{print $1 "\t" $3}

总结:
对awk的print来说
$1和$3之间如果你直接打入空格或TAB(想在命令行测试可以用CTRV+V+TAB来输入)都是被忽略的。所以你的第一个命令$1和$3就连在了一起

$1和$3之间双引号内的内容会被AWK显示出来,你的第二个命令中\t被SHELL解析成TAB给了AWK,第三个命令\t是被AWK自己解析了
补充:
awk中同时提供了print和printf两种打印输出的函数。

其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分
估计题主的纠结在这里吧

论坛徽章:
0
14 [报告]
发表于 2015-07-16 11:38 |只看该作者
恩,谢谢,感谢你们这些好银 啊回复 13# .Victor


   

论坛徽章:
0
15 [报告]
发表于 2015-07-16 11:38 |只看该作者
我要的是最后一句话,这是规定,哈哈回复 14# zpcalm


   

论坛徽章:
0
16 [报告]
发表于 2015-07-16 17:21 |只看该作者
双引号表示\仍然作为转义符号,单引号就是\和t两个普通字符了

论坛徽章:
0
17 [报告]
发表于 2015-07-17 23:29 |只看该作者
五楼大神莫名笑点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP