如何用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
逻辑说明
- 用
prev变量缓存上一行内容,从第二行开始执行判断逻辑 - 触发补充分号的三个必要条件:
- 上一行以小写字母结尾
- 上一行末尾没有分号
- 当前行以大写字母开头
- 满足所有条件时,给上一行补加分号后输出;否则直接输出上一行
- 在
END块中处理并输出文件的最后一行内容
内容的提问来源于stack exchange,提问作者Dianderocker
相关产品推荐
相关产品推荐

