忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1151 | 回复: 2

[文本处理] awk的getline问题 [复制链接]

论坛徽章:
0
发表于 2018-05-11 20:23 |显示全部楼层
[root@bd69 ~]# cat b.txt
2
4
6
8
10

[root@bd69 ~]# awk 'BEGIN{while(getline<"b.txt")print}'
2
4
6
8
10


[root@bd69 ~]# seq 6 | awk '{getline;print}'
2
4
6


[root@bd69 ~]# seq 6 | awk '{print;getline}'
1
3
5



请问 awk 的 getline 为什么在读文件的时候不会跳行,为什么 getline;print 会跳行?,位置改变 结果也不同,为什么?




论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2018-05-11 20:52 |显示全部楼层
本帖最后由 1cpuer 于 2018-05-11 21:25 编辑

回复 1# christmas1102

条件
<"b.txt" 条件
getline;print 会跳行
seq 6 | sed -n 'n;p'
2
4
6
两个意思是差不多的
sed n 读取下一个输入行到模式空间
sed -n 打印不可视字符
getline 获得 行 ->
读取下一个输入行
seq 6 | sed 'n;g;p'   
1


3


5

sed g 取出缓存空间

echo "core--i8"
core--i8
光标到 ^e-to-"$ 鼠标右键 ->鼠标左键 ->复制  ->粘帖
复制到了缓存区,粘帖到了 job 区, 打印到了模式区 。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之同曦
日期:2017-09-11 14:39:482016科比退役纪念章
日期:2018-01-19 12:45:59CU十四周年纪念徽章
日期:2018-03-16 13:09:5315-16赛季CBA联赛之北京
日期:2018-03-23 15:24:0715-16赛季CBA联赛之辽宁
日期:2018-04-02 14:03:3915-16赛季CBA联赛之深圳
日期:2018-05-04 21:53:0815-16赛季CBA联赛之广东
日期:2018-05-14 09:52:42CU十四周年纪念徽章
日期:2018-05-15 11:36:38
发表于 2018-05-12 20:06 |显示全部楼层
回复 1# christmas1102


请问 awk 的 getline 为什么在读文件的时候不会跳行

getline在while循环中逐行读取文件
为什么 getline;print 会跳行?

awk首先读取第1行到模式空间,然后执行getline指令读取第2行到模式空间,最后执行print指令打印第2行
位置改变 结果也不同,为什么?

awk按顺序执行指令,位置改变结果当然不同了。awk首先读取第1行到模式空间,然后执行print指令打印第1行,最后执行getline指令读取第2行到模式空间
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP