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很好的解决了这个问题。

  • 相关阅读:
    中心极限定理
    BCEloss和交叉熵损失的区别
    postgresql的python接口
    DataGrip 2020.1 安装与激活方法
    区块链技术
    TensorRT推理加速推断并提高吞吐量
    纯视觉取代slam做路径规划及避障的思路
    DL重新回顾总结
    OpenCV 轮廓方向
    OpenCV 低通滤波(可设置频率)
  • 原文地址:https://www.cnblogs.com/ivictor/p/4975613.html
Copyright © 2011-2022 走看看