免费注册 查看新帖 |

Chinaunix

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

awk种rs的使用方法疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-03 14:08 |只看该作者 |倒序浏览
以下是我执行awk的过程


#more mysql.sql_test
INSERT INTO TABLES VALUES
('0');
INSERT INTO TABLES VALUES
('1');
INSERT INTO TABLES VALUES
('2');
INSERT INTO TABLES VALUES
('3');
INSERT INTO TABLES VALUES
('4');
#awk '{ RS=";"} { print $1,$2,$3,$4,$5 }' mysql.sql_test > mysql.sql_test_temp
# more mysql.sql_test_temp
INSERT INTO TABLES VALUES
('0')   
INSERT INTO TABLES VALUES ('1')
INSERT INTO TABLES VALUES ('2')
INSERT INTO TABLES VALUES ('3')
INSERT INTO TABLES VALUES ('4')

#


我是想以 ; 为 纪录分隔符,把原文件整形到一个新的文件中,现在我有以下疑问,请帮忙解答,谢谢
1  为什么原文件的第一行第二行纪录没有按照目的整形成功?
2  为什么整形后的文件最后出现了一个多余的空行?
3  原文件中的;为什么不作为内容输出到新的文件中呢?

论坛徽章:
0
2 [报告]
发表于 2008-02-03 14:15 |只看该作者
有没有谁帮我一把呢!!

论坛徽章:
0
3 [报告]
发表于 2008-02-03 14:32 |只看该作者

  1. awk 'BEGIN{RS=";"}NR<6{print$1,$2,$3,$4,$5}' mysql.sql_test
复制代码


1、读到;号在做换行标志,所以第一行先打印了,用BEGIN
2、最后一个分号把后面的又看成一行
3、不知道想表达什么?

个人肤浅理解

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2008-02-03 14:34 |只看该作者
awk 'BEGIN{RS=";";ORS=";\n"}$1=$1'

论坛徽章:
0
5 [报告]
发表于 2008-02-03 14:50 |只看该作者
原帖由 无声无息 于 2008-2-3 14:32 发表

awk 'BEGIN{RS=";"}NR



谢谢你的回答,关于问题3我想问的是,为什么原来文件中的;在新文件中没有输出?

论坛徽章:
0
6 [报告]
发表于 2008-02-03 14:54 |只看该作者
原帖由 zxh1336 于 2008-2-3 14:50 发表



谢谢你的回答,关于问题3我想问的是,为什么原来文件中的;在新文件中没有输出?



awk默认的输出记录分隔符为一个换行符,所以输出的是换行

你可以重新赋予输出换行符

  1. awk 'BEGIN{RS=";";ORS=";\n"}NR<6{print$1,$2,$3,$4,$5}' mysql.sql_test
  2. INSERT INTO TABLES VALUES ('0');
  3. INSERT INTO TABLES VALUES ('1');
  4. INSERT INTO TABLES VALUES ('2');
  5. INSERT INTO TABLES VALUES ('3');
  6. INSERT INTO TABLES VALUES ('4');
复制代码

论坛徽章:
0
7 [报告]
发表于 2008-02-03 14:57 |只看该作者
原帖由 woodie 于 2008-2-3 14:34 发表
awk 'BEGIN{RS=";";ORS=";\n"}$1=$1'


佩服佩服,自问想不出这样简洁的方法,
$1=$1 产生两个效果:
1、当$1有内容那么整个表达式返回 true, 否则false(意味着最后一个空记录不会进入action)
2、当记录某部分内容被重新修改,那么整个$0就会用默认OFS重组(意味着换行符会被替换成一个空格)

论坛徽章:
0
8 [报告]
发表于 2008-02-03 15:05 |只看该作者
原帖由 woodie 于 2008-2-3 14:34 发表
awk 'BEGIN{RS=";";ORS=";\n"}$1=$1'


又学习了,真的简洁

论坛徽章:
0
9 [报告]
发表于 2008-02-03 15:15 |只看该作者
谢谢以上各位的帮忙,小弟学到了很多很多呢!

论坛徽章:
0
10 [报告]
发表于 2008-05-13 19:48 |只看该作者
hao
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP