根据不同列中的相应值组织列和项目

根据不同列中的相应值组织列和项目

我有一个大输入.csv 文件有 2 列:类别(A 列)和项目(B 列),每个项目都具有在 A 列上找到的特定类别,并且比组本身高一行;例如:第 3-10 行是与类别“颜色”(A2) 相对应的一组项目,等等:

Column A    Column B
Category    Item
colours 
            red
            blue
            pink
            yellow
            brown
            gray
            white
            violet
trees   
            coconut
            weeking wilow
            ginkgo
            dragon tree
            camphor tree
animals 
            sea urchins
            box jelyfish
            insect
            dinosaur
            triceratops
            apatosaurus

我正在尝试获得一个输出.csv 文件看起来像这样:

  • 第一列成为项目
  • 第二列成为类别,对于对应于特定类别的每个项目,我将在每行的第二列上放置该类别,基本上复制与每个项目对应的类别

input.csv 注释

这是output.csv 文件最终的样子:

Column A        Column B
Item            Category
red             colours
blue            colours
pink            colours
yellow          colours
brown           colours
gray            colours
white           colours
violet          colours
    
coconut         trees
weeking wilow   trees
ginkgo          trees
dragon tree     trees
camphor tree    trees
    
sea urchins     animals
box jelyfish    animals
insect          animals
dinosaur        animals
triceratops     animals
apatosaurus     animals

我正在尝试使用建议这里但没有成功:|

有什么方法可以使用 Perl 脚本来完成此任务,或者您建议我可以从 Linux 上的终端命令运行其他任何东西吗?

答案1

假设它是一个<TAB>单独的.csv文件,请尝试

awk -F"\t" '$1 {CAT = $1} $2 {print $2, CAT}' OFS="\t" file
Item    Category
red     colours
blue    colours
pink    colours
yellow  colours
brown   colours
gray    colours
white   colours
violet  colours
coconut trees
weeking wilow   trees
ginkgo  trees
dragon tree     trees
camphor tree    trees
sea urchins     animals
box jelyfish    animals
insect  animals
dinosaur        animals
triceratops     animals
apatosaurus     animals

如果第一个字段$1不为空,则保存类别。如果第二个字段$2不为空,则打印该字段和保存的类别。

相关内容