zoukankan      html  css  js  c++  java
  • 如何用perl将表格中不同列的数据进行拼凑,然后将拼凑后的数据用“|”连接在一起

    最近写了一个perl脚本,实现的功能是将表格中其中两列的数据进行拼凑,然后将拼凑后的数据用“|”连接在一起。

    表格内容如下:

    员工号码 员工姓名 职位 入职日期
    1001 张三 销售 1980/12/17 0:00:00
    1002 李四 财务 1981/02/20 0:00:00
    1003 王五 经理 1981/02/22 0:00:00
    1004 陈二 会计 1981/04/02 0:00:00

    要求如下:

    将员工姓名和入职日期用键值对的形式拼凑在一起,然后将拼凑后的数据用“|”连接在一起。

    结果如下:

    张三:1980/12/17 0:00:00|李四:1981/02/20 0:00:00|王五:1981/02/22 0:00:00|陈二:1981/04/02 0:00:00

    脚本如下:

    #!/usr/bin/perl
    use strict;
    my $line;
    while(<>){
         s/
    //;
         if(/(S+)s+(S+)s+(S+)s+(.*)/){
         $line .=$2.':'.$4.'|';
         }
    }
    print "$line
    ";
    

    脚本执行的结果如下:

    员工姓名:入职日期|张三:1980/12/17 0:00:00|李四:1981/02/20 0:00:00|王五:1981/02/22 0:00:00|陈二:1981/04/02 0:00:00|

    基本上符合要求。

    总结:

    1. s在perl中匹配空白字符。S匹配的是非空白字符。本来一开始用的是w,但w默认匹配的是英文字符,数字和_。不匹配中文字符,所以在这里就用了S来表示。

    2. 这种需求在实际中还是蛮常见的,普通的数据库对于若干列之间的拼凑还是很容易实现的,但是如何将拼凑后的结果再次拼凑在一起,却是个挑战,perl很好的解决了这个问题。

  • 相关阅读:
    博客阅读计数优化
    博客阅读简单计数
    博客后台富文本编辑
    博客分类统计
    Django关联关系查询
    上下篇博客,按月归档
    浅谈闭包以及常见面试题
    浅谈前端缓存(转至大佬)
    post请求头的常见类型
    浅谈RegExp 对象的方法
  • 原文地址:https://www.cnblogs.com/ivictor/p/4975613.html
Copyright © 2011-2022 走看看