将excel,csv中合并块中某条记录的值应用到整个块(使用多行的值,来填充新列数据)。

背景描述

在excel中使用其它列的值,根据某种计算规则来填充另一列(或新列)很容易实现。但是如果需要根据合并块中的多行来填充列时,就不容易实现,由于对excel不是太常用,因此这里使用的命令行工具实现的。
示例:使用图一的数据,生成图二中的最后一列。最后一列的值来自本快中第三列标注为是的那行的第二列的值。
在这里插入图片描述![在这里插入图片描述](https://img-
在这里插入图片描述

实现

这里使用了一条级联的指令实现(假设数据为csv格式,这里的分隔符是制表符“\t”)

cat ~/Desktop/arar.txt | awk -F"\t" '{if($3 == "是"){id = $2} else if($1 != ""){id = 0} printf("%s\t%s\n",$N,id)}' | tac | awk -F"\t" '{if($4 != 0){id = $4}else{$4 = id} printf("%s\t%s\t%s\t%s\n", $1,$2,$3,$4)}' | tac
# 上面的最后一个print, 尝试打印 print $N, 但是格式乱了(没找到是什么原因),因此使用printf来保持格式。

指令分解讲解

  1. 读入数据。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4316d01e6e954153bedcaf28b2461087.png
  2. 使用变量id存储块中的值,当第三列是搜索值时更新id值,否则第一列不为空时重置id值,让后将id追加到最后一列。
    在这里插入图片描述
  3. 上面的结果还有部分不正确,也就时那些0值。此使需要逆序处理下就好。
    3.1 颠倒数据;
    在这里插入图片描述
    3.2 第四列非0,则使用当前值更新id, 遇到第四列为0,则使用id值,更新第四列的值。(颠倒后的值可以保证0前必有非零值)
    在这里插入图片描述
    3.3 值已经填充完毕,但是顺序是颠倒的,这是再颠倒一次,就可完成。
    在这里插入图片描述

到这里,数据已经填充,可以保存成文本文件,然后倒入的excel中即可,也可以复制最后一列进行粘贴。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 20:08:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 20:08:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 20:08:03       82 阅读
  4. Python语言-面向对象

    2024-04-07 20:08:03       91 阅读

热门阅读

  1. 如何找出公司间存在关联关系?

    2024-04-07 20:08:03       40 阅读
  2. 【安全】数据安全产品概览

    2024-04-07 20:08:03       35 阅读
  3. Python—容器

    2024-04-07 20:08:03       37 阅读
  4. [xboard]real6410-3 S3C6410光盘资料与功能测试

    2024-04-07 20:08:03       32 阅读
  5. 力扣(数组)分发饼干

    2024-04-07 20:08:03       26 阅读
  6. vue-router v4.x命名路由,编程式跳转

    2024-04-07 20:08:03       30 阅读
  7. 独孤思维:1小时卖了80单

    2024-04-07 20:08:03       35 阅读
  8. shell脚本规范及变量类型、置换

    2024-04-07 20:08:03       38 阅读