免费注册 查看新帖 |

Chinaunix

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

[学习分享] awk中的$0到底代表整个文件还是文件的第一行? [复制链接]

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-06-01 06:20:00数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-07 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-20 15:27 |只看该作者 |倒序浏览
各种资料都说awk中的参数$0表示文件的第一行,可以我用下面的实际操作似乎$0表示的是整个文件,

到底怎么回事?
  1. [aaa@hadoop-node1 ~]$ cat ./test
  2. 040347  2014    1101401
  3. 040347  2014    1101401
  4. 040347  2014    1101401
  5. 040347  2014    1101401
  6. 040347  2014    1101401
  7. 040347  2014    1101401
  8. 040347  2014    1101401
  9. 040347  2014    1101401
  10. 040347  2014    1101401
  11. 040347  2014    1101401
  12. 040347  2014    1101401
  13. 040347  2014    1101401
  14. 040347  2014    1101401
  15. 040347  2014    1101401
  16. 040347  2014    1101401
  17. 040347  2014    1101401
  18. 040347  2014    1101401
  19. 040347  2014    1101401
  20. 040347  2014    1101401
  21. 040347  2014    1101401
  22. 040347  2014    1101402
  23. 040347  2014    1101402
  24. 040347  2014    1101402
  25. 040347  2014    1101402
  26. 040347  2014    1101402
  27. 040347  2014    1101402
  28. 040347  2014    1101402
  29. 040347  2014    1101402
  30. 040347  2014    1101402
  31. 040347  2014    1101402
  32. 040347  2014    1101402
  33. 040347  2014    1101402
  34. 040347  2014    1101402
  35. 040347  2014    1101402
  36. 040347  2014    1101402
  37. [aaa@hadoop-node1 ~]$
复制代码
  1. [aaa@hadoop-node1 ~]$ cat ./test | awk '{print $0}'
  2. 040347  2014    1101401
  3. 040347  2014    1101401
  4. 040347  2014    1101401
  5. 040347  2014    1101401
  6. 040347  2014    1101401
  7. 040347  2014    1101401
  8. 040347  2014    1101401
  9. 040347  2014    1101401
  10. 040347  2014    1101401
  11. 040347  2014    1101401
  12. 040347  2014    1101401
  13. 040347  2014    1101401
  14. 040347  2014    1101401
  15. 040347  2014    1101401
  16. 040347  2014    1101401
  17. 040347  2014    1101401
  18. 040347  2014    1101401
  19. 040347  2014    1101401
  20. 040347  2014    1101401
  21. 040347  2014    1101401
  22. 040347  2014    1101402
  23. 040347  2014    1101402
  24. 040347  2014    1101402
  25. 040347  2014    1101402
  26. 040347  2014    1101402
  27. 040347  2014    1101402
  28. 040347  2014    1101402
  29. 040347  2014    1101402
  30. 040347  2014    1101402
  31. 040347  2014    1101402
  32. 040347  2014    1101402
  33. 040347  2014    1101402
  34. 040347  2014    1101402
  35. 040347  2014    1101402
  36. 040347  2014    1101402
  37. [aaa@hadoop-node1 ~]$
复制代码
哪位朋友能解释一下,谢谢

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
2 [报告]
发表于 2015-10-20 15:32 |只看该作者
本帖最后由 zsszss0000 于 2015-10-20 15:34 编辑

$0表示这一行
'{print $0}' 这句话被用在每一行上
也就是每一行都执行这句话,所以每一行都输出了,看起来像整篇。

  1. awk '{print $0;print $0}
复制代码
试试这个 看看

论坛徽章:
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
3 [报告]
发表于 2015-10-20 15:33 |只看该作者
awk 是 行 处理的。。
也就说是每次处理一行。
awk '{print $0}' 的意思是:读了一行,输出了$0(整行),下一次还会继续读取下行,然后再输出。。

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-06-01 06:20:00数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-07 06:20:00
4 [报告]
发表于 2015-10-20 15:41 |只看该作者
哦,是每行,而不是第一行,也不是整个文件


谢谢楼上的朋友

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
5 [报告]
发表于 2015-10-20 20:13 |只看该作者
awk '{print $0}' 的意思是:读了一行,输出了$0(整行),下一次还会继续读取下行,然后再输出。。
对,因为楼主没有加过滤条件,所以他会整个文件显示出来
如果加了过滤条件那么,他会显示符合过滤条件的行,并显示整行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP