我有一个大输入.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 文件看起来像这样:
- 第一列成为项目
- 第二列成为类别,对于对应于特定类别的每个项目,我将在每行的第二列上放置该类别,基本上复制与每个项目对应的类别
这是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
不为空,则打印该字段和保存的类别。