You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何补全制表符分隔文件:向下复制分类标识至对应条目

把分类前置的特殊格式文本转成全量制表符分隔文件

原始输入格式

这份文本中,分类行用|包裹,条目行以^开头:

|01BFRUITS|
^banana
^apple
^orange
^pear
|01AELECTRONICS|
^television
^radio
^dishwasher
^computer
|01AANIMAL|
^bear
^cat
^dog
^elephant
|01ASHAPE|
^circle
^square
^diamond
^star

第一步:用sed预处理

先清理分类行的首尾竖线,把条目行的^替换成制表符,得到中间结果:

sed -e 's/^|//; s/|$//' -e 's/^\^/\t/' input.txt

输出:

01BFRUITS       banana
        apple
        orange
        pear
01AELECTRONICS  television
        radio
        dishwasher
        computer
01AANIMAL       bear
        cat
        dog
        elephant
01ASHAPE        circle
        square
        diamond
        star

第二步:用awk补全分类

此时条目行的分类字段为空,需要用awk自动补全上一行的分类。一开始直接输出会丢失制表符,必须显式设置OFS='\t'(输出字段分隔符)来保留格式:

awk -F'\t' -v OFS='\t' '{
    if ($1 != "") {
        category = $1
    } else {
        $1 = category
    }
    print
}'

组合命令一步到位

把sed和awk用管道串联,直接生成目标制表符分隔文件:

sed -e 's/^|//; s/|$//' -e 's/^\^/\t/' input.txt | awk -F'\t' -v OFS='\t' '{if ($1 != "") category=$1; else $1=category; print}' > output.tsv

最终输出(制表符分隔)

01BFRUITS       banana
01BFRUITS       apple
01BFRUITS       orange
01BFRUITS       pear
01AELECTRONICS  television
01AELECTRONICS  radio
01AELECTRONICS  dishwasher
01AELECTRONICS  computer
01AANIMAL       bear
01AANIMAL       cat
01AANIMAL       dog
01AANIMAL       elephant
01ASHAPE        circle
01ASHAPE        square
01ASHAPE        diamond
01ASHAPE        star

内容的提问来源于stack exchange,提问作者vicscul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:40:33