免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 2gua

Perl现在究竟还有多少人在用、在学呢? [复制链接]

论坛徽章:
0
发表于 2008-07-30 10:54 |显示全部楼层
原帖由 flw 于 2008-7-27 16:27 发表

关于这句话,我这里有个注解:

同行是冤家,害死一个算一个!


国富论?

论坛徽章:
0
发表于 2008-07-30 10:59 |显示全部楼层

我在学呢,呵呵

我在学呢,呵呵

论坛徽章:
0
发表于 2008-07-30 10:59 |显示全部楼层
没法统计啊

论坛徽章:
0
发表于 2008-07-30 11:14 |显示全部楼层

回复 #1 lujx 的帖子

上周3我很有准备用PERL写个脚本来“切字符串”的,不过后来用了60行的bash shell代替,原因是PERL手册中没教我“遍历文件内容”


bash shell代码如下:
#!/bin/bash

#Find all tablename in VIEWS files
views=$(cat $1 | awk -F " " '
{
        print $3;
}
');

for table_name in `echo $views`
do
        echo "-----------------$table_name";
        table_columns_sql=$(sed -e :a -e 'N;s/\r\n//;ta' $2 | sed -e 's/go/\n/ig' | grep -i "create table $table_name " | awk -F "\\\)lock allpages" '{print $1}' | awk -F ",\t\tCONSTRAINT" '{print $1}' | sed -e "s/create\ table\ $table_name\ (//ig");
        table_pk=$(echo $table_columns_sql | awk -F " " '{print $1}');

        #===== View ======
        table_columns_type=$(echo $table_columns_sql | sed -e 's/ , /,\n/ig' | sed -e 's/null//ig' | sed -e 's/not//ig' | sed -e '/^$/d');
        echo "CREATE OR REPLACE view $table_name as
select * from dblink('dbname=xxxx user=xxxx password=xxxx',
'select * from $table_name')
  as t1(
        $table_columns_type
);";


        #===== View insert ======
        table_columns=$(echo $table_columns_type | sed -e 's/ , /,\n/ig' | awk -F " " '{
                if(NR>1){
                        printf("|| \047,\047 || case when NEW.%s is not null then \047\047\047\047 || NEW.%s || \047\047\047\047 else \047\047\047\047\047\047 end\n\t",$1,$1)
                };
}');
        echo "CREATE OR REPLACE RULE "$table_name"_i AS
    ON INSERT TO $table_name DO INSTEAD
SELECT dblink_exec('dbname=xxxx user=xxxx password=xxxx'::text,
'INSERT INTO $table_name VALUES ('
        || case when NEW.$table_pk is not null then '''' || NEW.$table_pk || '''' else '''''' end
        $table_columns|| ');'
);
";

        #===== View update ======
        table_columns=$(echo $table_columns_type | sed -e 's/ , /,\n/ig' | awk -F " " '{
                if(NR>1){
                        printf("|| \047chrcssm=\047 || case when NEW.%s is not null then \047\047\047\047 || NEW.%s || \047\047\047,\047 ELSE \047%s,\047  end\n\t",$1,$1,$1)
                };
}');
        echo "CREATE OR REPLACE RULE "$table_name"_u AS
    ON UPDATE TO $table_name DO INSTEAD
SELECT dblink_exec('dbname=xxxx user=xxxx password=xxxx'::text,
'UPDATE $table_name SET '
        $table_columns|| ' WHERE $table_pk=''' || OLD.$table_pk || ''';'
);
";

        #===== View delete ======
        echo "CREATE OR REPLACE RULE "$table_name"_d AS
    ON DELETE TO $table_name DO INSTEAD
SELECT dblink_exec('dbname=xxxx user=xxxx password=xxxx'::text,
'DELETE FROM $table_name WHERE $table_pk=''' || OLD.$table_pk || ''';'
);
";
done

论坛徽章:
0
发表于 2008-07-30 11:15 |显示全部楼层

回复 #10 swordfish.cn 的帖子

处理文本用bash+awk+sed更爽

论坛徽章:
0
发表于 2008-07-30 12:25 |显示全部楼层
原帖由 scottsiu 于 2008-7-30 11:14 发表
上周3我很有准备用PERL写个脚本来“切字符串”的,不过后来用了60行的bash shell代替,原因是PERL手册中没教我“遍历文件内容”


不是没教 而是你没学

兄弟你悠着点 切个字符串  写60行  别累坏了

有时间建议你看看 perl语言入门 你会有意外的收获的

论坛徽章:
0
发表于 2008-07-30 12:37 |显示全部楼层

回复 #55 scottsiu 的帖子

这bash写的太丑陋了,真的建议兄弟静下心来学习perl的文本处理

论坛徽章:
0
发表于 2008-07-30 13:41 |显示全部楼层

回复 #54 scottsiu 的帖子

这代码写的  
估计写完后两种情况:要么很high, 很有成就感。 要么很累。
关于切字符串,用awk还不如用perl快。

论坛徽章:
0
发表于 2008-07-30 14:53 |显示全部楼层

回复 #54 scottsiu 的帖子

辛苦你了啊。

论坛徽章:
0
发表于 2008-07-30 15:15 |显示全部楼层

回复 #54 scottsiu 的帖子

此人疯了,鉴定完毕……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP