前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >纠结的paste格式问题(未解决) (r5笔记第26天)

纠结的paste格式问题(未解决) (r5笔记第26天)

作者头像
jeanron100
发布2018-03-15 17:40:12
6870
发布2018-03-15 17:40:12
举报

在使用paste命令的时候,会发现输出的结果会有一些问题,比如我们存在一个文件,内容为: ################################################################# DB workload ################################################################# Current Instance ~~~~~~~~~~~~~~~~ DBID DB_NAME INST_NUM INST_NAME ---------- --------- ---------- ---------------- 1028247664 TEST11G 1 TEST11G 1 row selected. BEGIN_SNAP END_SNAP SNAPDATE DUR_MINS DBTIME ---------- ---------- -------------------------- ---------- ---------- 289 290 04 May 2015 19:00 60 2 290 290 04 May 2015 22:55 10 0 2 rows selected. 使用paste 来合并文件内容,会发现格式有些错行。假设文件名为a2,则合并使用的命令是paste a2 a2,输出结果如下。可以看出标红的部分是错位的部分。

这种情况还是比较郁闷的,格式老是差那么一点。让结果看起来有些遗憾。 自己也尝试了其它的方法,但是效果还是不理想。我尝试借助sqlplus中的rpad函数来做字符串的格式化。理论上还是很不错的方式,但是最后发现也还是有些问题。 cat a1|awk '{print "select rpad('\''"$0 "'\'',100,'\'' '\'') "}' > b.sql cat a2|awk '{print "|| rpad('\''"$0 "'\'',100,'\'' '\'') col2 from dual;"}' > c.sql 这个语句会把两个并行的文件拼接成select rpad(xxxx)||rpad(xxxxx) from dual;的形式,在最后输出内容的时候,直接运行这些select xxxx from dual形式的语句就可以了。 生辰了文件b.sql和c.sql之后,我们再次利用paste来合并,使用的命令即: paste b.sql c.sql 按理说这种合并是和文本格式无关的了。拼接后的语句类似下面的形式 select rpad('#################################################################',100,' ') || lpad('#################################################################',100,' ') col2 from dual; select rpad('DB workload ',100,' ') || lpad('DB workload ',100,' ') col2 from dual; select rpad('#################################################################',100,' ') || lpad('#################################################################',100,' ') col2 from dual; select rpad(' ',100,' ') || lpad(' ',100,' ') col2 from dual; select rpad('Current Instance ',100,' ') || lpad('Current Instance ',100,' ') col2 from dual; 但是实际输出的时候,问题依然存在。 尝试了使用substr来截取字符串,问题依旧。 cat a1|awk '{print "select substr('\''"$0 "'\'',1,120) "}' > b.sql cat a2|awk '{print "|| substr('\''"$0 "'\'',1,120) col2 from dual;"}' > c.sql paste b.sql c.sql > d.sql 使用substr(rpad(),1,100)的方式问题还是依旧。 cat a1|awk '{print "select substr(rpad('\''"$0 "'\'',100,'\'' '\''),1,100) col1 "}' > b.sql cat a2|awk '{print ", substr(rpad('\''"$0 "'\'',100,'\'' '\''),1,100) col2 from dual;"}' > c.sql 看来对于这类文本的格式化还是需要做很多额外的工作来过滤了,任重道远,继续努力。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档