免费注册 查看新帖 |

Chinaunix

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

RS、ORS、FS、OFS相关问题 [复制链接]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
31 [报告]
发表于 2009-01-15 09:45 |只看该作者
原帖由 ly5066113 于 2009-1-15 09:37 发表
你的awk版本可能比较低,在我和andy这里,NF+=0是可以使OFS生效的。

对。我这里可以。只要对字段数NF,或某一字段做操作就能使OFS生效

论坛徽章:
0
32 [报告]
发表于 2009-01-15 10:14 |只看该作者
awk 'BEGIN{RS="#";OFS="";ORS="\n"}{print $1,$2,$3}' 1.txt
cat 1.txt |tr -d '\n'|tr '#' '\n'

论坛徽章:
0
33 [报告]
发表于 2009-01-15 10:34 |只看该作者

回复 #30 ynchnluiti 的帖子

考虑装个linux了,sco unix上这些东西都太旧了

论坛徽章:
0
34 [报告]
发表于 2009-01-22 11:39 |只看该作者

回复 #25 ywlscpl 的帖子

应该是对$i做过计算才能使OFS生效

正确的说法应该是如果awk认为$0有了变化,那么print $0的时候会自动利用OFS来拼装

论坛徽章:
0
35 [报告]
发表于 2009-01-22 15:48 |只看该作者
原帖由 ywlscpl 于 2009-1-15 10:34 发表
考虑装个linux了,sco unix上这些东西都太旧了


用不着喜新厌旧,我用的也是sco,基本的东西变化不大!
NF+=0不能用,就用$1=$1呗!关键在怎么用!

awk 'BEGIN{RS="#";OFS=" "} $1=$1' file

论坛徽章:
0
36 [报告]
发表于 2009-01-22 15:55 |只看该作者
原帖由 ywlscpl 于 2009-1-14 19:54 发表
感谢liaosnet的解答,帮我弄清了一个概念。
原来print $0跟print $1,$2,$3,$4,....$NF是不等价的,print $0的时候忽略OFS了,直接输出原记录了,以前一直以为两者相同。


谁说print $0的时候忽略OFS,是你的例子有问题!

# awk 'BEGIN{FS="|";OFS=","}
$1==$1{print $0}' o1
10,2,4
30,3,9
10,4,7
20,7,6

论坛徽章:
0
37 [报告]
发表于 2009-03-01 22:13 |只看该作者
留个位置 明天来查。。

论坛徽章:
0
38 [报告]
发表于 2009-03-02 09:51 |只看该作者
awk 'BEGIN{FS="\n";RS="#\n";OFS=""}$1=$1'

论坛徽章:
0
39 [报告]
发表于 2009-03-02 14:30 |只看该作者
awk 'BEGIN{RS="#";FS="\n"}NR>1{for(i=2;i<=NF-1;i++)printf $i;print ""}' file

result:
123
45
6789

论坛徽章:
0
40 [报告]
发表于 2009-03-02 14:51 |只看该作者
但如果想自定义FS又该如何呢,比如输出为
1,2,3
4,5
6,7,8,9

awk 'BEGIN{RS="#";FS="n"}NR>1{gsub("(^\n|\n$)","");gsub("\n",",");print $0}' file

[ 本帖最后由 cooljean2008 于 2009-3-2 14:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP