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

如何用AWK为缺失分号的Pure Data词典文本补充分号?

问题:用AWK补全Pure Data转换词典的缺失分号

我有一个用于Pure Data的转换词典,每条条目包含单词、发音说明以及结尾分号。目前部分条目的结尾分号缺失,希望通过AWK自动补全缺失的分号。规则为:若小写字母结尾的行后紧跟大写字母开头的行,且该行末尾无分号,则在小写行末尾添加分号。

示例文本:

ELFKIN
Elf
kin;
ELFLAND
Elf
land
;
ELFLOCK
Elf
lock
;
ELGIN
El
gin
ELICIT
E
lic
it
ELICIT
E
lic
it

尝试的代码:

awk 'length($0>1) && /[:^, upper:]/{l=l";"}NR>1{print l}{l=$0}END{print l}' file2

请问正确的AWK代码应该如何编写?


正确的AWK实现代码

awk '
NR > 1 {
    if (prev ~ /[a-z]$/ && prev !~ /;$/ && $0 ~ /^[A-Z]/) {
        print prev ";"
    } else {
        print prev
    }
}
{ prev = $0 }
END {
    print prev
}' file2

逻辑说明

  1. 用prev变量缓存上一行内容,从第二行开始执行判断逻辑
  2. 触发补充分号的三个必要条件:
    • 上一行以小写字母结尾
    • 上一行末尾没有分号
    • 当前行以大写字母开头
  3. 满足所有条件时,给上一行补加分号后输出;否则直接输出上一行
  4. 在END块中处理并输出文件的最后一行内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:22:05