免费注册 查看新帖 |

Chinaunix

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

如何根据文件信息获取文件名称以及文件内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-18 11:11 |只看该作者 |倒序浏览
文件格式如下:
create table tablename1  (
name1 varchar2;
name2 varchar2;
)

create table tablename2 (
name3 varchar2;
name4 varchar2;
)

实现功能:
1、生成两个文件tablename1、tablename2
2、每个文件中存放对应的表字段

注意:表名称后面的空格多少不一致。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2012-06-18 12:28 |只看该作者
  1. awk -v RS="" '{print >$3".table"}' infile
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-06-18 12:50 |只看该作者
执行出两个文件,tablename1.table  tablename2.table

每个文件中的内容为空

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
4 [报告]
发表于 2012-06-18 12:55 |只看该作者
ljc_2155 发表于 2012-06-18 12:50
执行出两个文件,tablename1.table  tablename2.table

每个文件中的内容为空

表字段的分割空行里是否含有空格,TAB之类不可见字符?

论坛徽章:
0
5 [报告]
发表于 2012-06-18 13:02 |只看该作者
ljc_2155 发表于 2012-06-18 12:50
执行出两个文件,tablename1.table  tablename2.table

每个文件中的内容为空

只要你create语句之间有空行,2楼的就是对的.

论坛徽章:
0
6 [报告]
发表于 2012-06-18 14:07 |只看该作者
create语句之间有空行呀

论坛徽章:
0
7 [报告]
发表于 2012-06-18 14:12 |只看该作者
源文件内容:
create table tablename1  (
name1 varchar2;
name2 varchar2;
)

create table tablename2 (
name3 varchar2;
name4 varchar2;
)

想转换后的文件内容

表文件tablename1  存放
name1 varchar2;
name2 varchar2;

表文件tablename2  存放
name1 varchar3;
name2 varchar4;


论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
8 [报告]
发表于 2012-06-18 14:21 |只看该作者
回复 7# ljc_2155
  1. awk '/create/{file=$3;next}!/)/&&NF{print >file".txt"}'
复制代码

论坛徽章:
0
9 [报告]
发表于 2012-06-18 14:53 |只看该作者
求教求教求教求教求教求教求教求教求教求教求教求教求教求教

论坛徽章:
0
10 [报告]
发表于 2012-06-18 19:30 |只看该作者
本帖最后由 iamhere2007 于 2012-06-19 13:16 编辑

awk.script内容如下:
{
   n=split($0,parts,"\n")
   if($3 ~ "\\(" )
   {
       fileName=substr($3,1,length($3)-1)".table"
       for(k=2;k<n;k++)
           print parts[k]>fileName
   }
   else
   {  
       fileName=$3".table"
       for(k=2;k<n;k++)
           print parts[k]>fileName
   }
}

然后
awk -v RS='' -f awk.script tableFile
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP