合并 CSV 行回填空行

问题描述 投票:0回答:1

我有一个大型 CSV 文件,其中包含许多列,这些列大多具有重复值,但有些列的值在行与行之间不断变化。这些变化的列要么包含数据,要么为空。其他列具有固定值(请参见下面的示例)。如何压缩或删除重复的行,以便将空行合并为更少的行?我已经编写了一个 Python 脚本来执行此操作,但感觉应该有一些优雅的 Linux 命令行方法可以一次性执行此操作。

CSV 输入示例:

固定第 1 栏 固定第 2 栏 变量第 3 列 变量第 4 列
A B 1
A B 1
C D 1
C D 1

预期输出是:

固定第 1 栏 固定第 2 栏 变量第 3 列 变量第 4 列
A B 1 1
C D 1 1

注意前两列具有固定数据,而其他两列具有空值或数据值。合并行本质上是填充空列,同时保持固定列相同。

csv command-line
1个回答
0
投票

像这样的 awk 脚本:

awk -F "\t" 'BEGIN{ OFS="\t"; getline }{ a3[$1FS$2]+=$3; a4[$1FS$2]+=$4 }END{ for( i in a3){  print i,a3[i],a4[i]} }' input

输出:

C       D       1       1
A       B       1       1

您必须自己解决丢失的标头(抱歉,没有时间添加它们)😉

© www.soinside.com 2019 - 2024. All rights reserved.