免费注册 查看新帖 |

Chinaunix

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

[文本处理] FS与OFS的区别 [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 10:01:44程序设计版块每日发帖之星
日期:2015-06-28 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-11 14:23 |只看该作者 |倒序浏览
文本文件:
mona 70 77 85 83 70
john 85 92 78 94 100

BEGIN{
        FS="\t"
}
{
        print NF,NR
}
得到的结果是:
$ awk -f 1.awk 1.txt
1 1
1 2
改成
BEGIN{
        FS=" "
}
{
        print NF,NR
}
或者后,结果就正确了,FS和OFS的区别在哪呢?
BEGIN{
        OFS="\t"
}
{
        print NF,NR
}

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2015-01-11 16:36 |只看该作者

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
3 [报告]
发表于 2015-01-11 16:44 |只看该作者
FS和OFS 一个是指定分隔符,一个是输出分隔符
BEGIN{
        FS="\t"
}
{
        print NF,NR
}
输出的结果是
1 1
1 2
是因为你指定的分隔符为\t,而你的文档实际上是以一个空格分隔的,所以NF为1,假如你将'\t'换成' '的话,NF就会为6

你最后将FS改成OFS,实际上定义了输出后显示在屏幕上的格式,awk默认你的分隔符为空格,所以会输出NF\tNR的格式,也就是下面这个结果
6       1
6       2

不知道这么解释你是不是能明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP