免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: ruifox

awk用法小结(作者总结)  关闭 [复制链接]

论坛徽章:
0
发表于 2006-02-09 12:40 |显示全部楼层
收下好好学习。

论坛徽章:
0
发表于 2006-02-09 17:01 |显示全部楼层
强烈建议斑竹加精

论坛徽章:
0
发表于 2006-02-13 21:40 |显示全部楼层

sed和awk都已经淘汰了.

用perl可以更好的完成sed和awk所完成的功能,而且完成的更好.

论坛徽章:
0
发表于 2006-02-18 00:47 |显示全部楼层
好东东,谢谢lz

论坛徽章:
0
发表于 2006-02-19 17:11 |显示全部楼层
第4点行:awk -F "|" '{print $1}'   file 按照新的分隔符“|”进行操作。
错误:应该是awk -F ‘|’'{print $1}'   file 按照新的分隔符“|”进行操作。

论坛徽章:
0
发表于 2007-08-01 00:05 |显示全部楼层
感谢分享

论坛徽章:
0
发表于 2007-08-01 02:24 |显示全部楼层
原帖由 idiotqxf 于 2006-2-19 17:11 发表
第4点行:awk -F "|" '{print $1}'   file 按照新的分隔符“|”进行操作。
错误:应该是awk -F ‘|’'{print $1}'   file 按照新的分隔符“|”进行操作。


我试了,本例-F后用单/双引号均可以,结果一样.楼主没问题,25楼用中文单引号反而错了.
单双引号的差别是:shell对单引号中的内容不解释,直接传给awk,而对双引号中的内容解释后再传给awk.

论坛徽章:
0
发表于 2007-08-01 02:54 |显示全部楼层
原帖由 ruifox 于 2006-1-20 18:23 发表
非常感谢6楼的指出了我的错误!
不过我对单引号和双引号的用法仍然有点糊涂:

如果说单引号不做处理,为什么用单引号括住的系统变量会取到值abcd,而不是$Flag,我觉得你说的不做处理应该是指最外面的一层单 ...


对19条的描述可用6楼的,6楼对第1例解释确不对.
awk '{print '$Flag'}'
这个例子用法有问题,引号要配对使用,外层用了单引号,内层再用就必须用\转义,应该更正为:
awk '{print \'$Flag\'}'

awk '{print "$Flag"}'
结果是shell不解释$Flag,直接传给awk将$Flag当字符串输出

楼主的例子在你的环境中输出abcd,我认为是shell将前两个单引号内容取出,加上环境变量值abcd,再加上后两个引号之间的内容,3个串连起来后传给awk.刚好第2第3个引号之间没空格,所以没报错. 换了别的shell或别的操作系统,结果可能不同或报错.

19、在awk中如需调用环境变量一定不能出现在单引号内:
Flag=abcd
awk '{print '$Flag'}'   用法不对,引号不配对,结果依赖环境
awk '{print  "$Flag"}'   结果为$Flag
awk "{print  '$Flag'}"   结果为$Flag
awk "{print  \"$Flag\"}"   结果为abcd

论坛徽章:
0
发表于 2007-08-01 10:51 |显示全部楼层
学习

论坛徽章:
0
发表于 2007-08-01 11:49 |显示全部楼层
总结的好,收下啦,慢慢消化!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP