首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对只包含ASCII字母表的行执行sed替换?

如何对只包含ASCII字母表的行执行sed替换?
EN

Stack Overflow用户
提问于 2021-12-04 07:12:01
回答 1查看 60关注 0票数 1

在我的中文输入法的字典文件中,我有超过10万的语音条目。有些投稿人不能输入朱音(bopomofo),但只能输入拼音(带有数字语调)。

我写了一个sed脚本,它可以自动地将这样的拼音符号转换成朱音。然而,sed需要很长时间来执行整个文件的操作,因为sed文件本身很大.几乎500行regex。

我在想,sed是否只能触发到那些包含拼音的行?

样本输入:

代码语言:javascript
复制
鸞膠續斷 luan2 jiao1 xu4 duan4
鸞駕 luan2 jia4
鸞儔鳳侶 ㄌㄨㄢˊ ㄔㄡˊ ㄈㄥˋ ㄌㄩˇ
鸞輿 ㄌㄨㄢˊ ㄩˊ
鸞鵠停峙 ㄌㄨㄢˊ ㄏㄨˊ ㄊㄧㄥˊ ㄓˋ
鸞飄鳳泊 ㄌㄨㄢˊ ㄆㄧㄠ ㄈㄥˋ ㄅㄛˊ
鸞鶴 ㄌㄨㄢˊ ㄏㄜˋ
鸞鑑 ㄌㄨㄢˊ ㄐㄧㄢˋ
灩澦堆 yan4 yu4 dui1
灩灩 yan4 yan4
籲天 ㄩˋ ㄊㄧㄢ
籲求 ㄩˋ ㄑㄧㄡˊ
籲請 ㄩˋ ㄑㄧㄥˇ
麤服亂頭 ㄘㄨ ㄈㄨˊ ㄌㄨㄢˋ ㄊㄡˊ
麤疏 cu1 shu1
麤糲 cu1 li4
齾齾 ya4 ya4
齉鼻兒 nang4 bi2 er1
㔩葉 e4 ye4
㟏岈 ㄏㄢ ㄒㄧㄚ
㥄遽 ㄌㄧㄥˊ ㄐㄩˋ
㥏墨 ㄊㄧㄢˇ ㄇㄛˋ
㩳身 ㄙㄨㄥˇ ㄕㄣ
㲯毿 ㄌㄢˊ ㄙㄢ
㶁㶁 ㄍㄨㄛˊ ㄍㄨㄛˊ
㶟水 ㄌㄟˊ ㄕㄨㄟˇ
䀇子 gu3 zi5
䈾箕 shao1 ji1
䍪羯 wa4 jie2
䫄外 chua4 wai4
䰐鬖 lan2 san1
䰖兒 zuan3 er1
䰰䰰 ru2 ru2

示例Bash命令(macOS):

代码语言:javascript
复制
sed -i '' -f ./CONV-HYPY2BPMF.SED SAMPLE_INPUT.txt

示例sed脚本:https://github.com/ShikiSuen/vchewing-lingual-data/blob/main/utilities/CONV-HYPY2BPMF.SED

期望产出:

代码语言:javascript
复制
鸞膠續斷 ㄌㄨㄢˊ ㄐㄧㄠ ㄒㄩˋ ㄉㄨㄢˋ
鸞駕 ㄌㄨㄢˊ ㄐㄧㄚˋ
鸞儔鳳侶 ㄌㄨㄢˊ ㄔㄡˊ ㄈㄥˋ ㄌㄩˇ
鸞輿 ㄌㄨㄢˊ ㄩˊ
鸞鵠停峙 ㄌㄨㄢˊ ㄏㄨˊ ㄊㄧㄥˊ ㄓˋ
鸞飄鳳泊 ㄌㄨㄢˊ ㄆㄧㄠ ㄈㄥˋ ㄅㄛˊ
鸞鶴 ㄌㄨㄢˊ ㄏㄜˋ
鸞鑑 ㄌㄨㄢˊ ㄐㄧㄢˋ
灩澦堆 ㄧㄢˋ ㄩˋ ㄉㄨㄟ
灩灩 ㄧㄢˋ ㄧㄢˋ
籲天 ㄩˋ ㄊㄧㄢ
籲求 ㄩˋ ㄑㄧㄡˊ
籲請 ㄩˋ ㄑㄧㄥˇ
麤服亂頭 ㄘㄨ ㄈㄨˊ ㄌㄨㄢˋ ㄊㄡˊ
麤疏 ㄘㄨ ㄕㄨ
麤糲 ㄘㄨ ㄌㄧˋ
齾齾 ㄧㄚˋ ㄧㄚˋ
齉鼻兒 ㄋㄤˋ ㄅㄧˊ ㄦ
㔩葉 ㄜˋ ㄧㄝˋ
㟏岈 ㄏㄢ ㄒㄧㄚ
㥄遽 ㄌㄧㄥˊ ㄐㄩˋ
㥏墨 ㄊㄧㄢˇ ㄇㄛˋ
㩳身 ㄙㄨㄥˇ ㄕㄣ
㲯毿 ㄌㄢˊ ㄙㄢ
㶁㶁 ㄍㄨㄛˊ ㄍㄨㄛˊ
㶟水 ㄌㄟˊ ㄕㄨㄟˇ
䀇子 ㄍㄨˇ ㄗ˙
䈾箕 ㄕㄠ ㄐㄧ
䍪羯 ㄨㄚˋ ㄐㄧㄝˊ
䫄外 ㄔㄨㄚˋ ㄨㄞˋ
䰐鬖 ㄌㄢˊ ㄙㄢ
䰖兒 ㄗㄨㄢˇ ㄦ
䰰䰰 ㄖㄨˊ ㄖㄨˊ
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-04 10:01:38

如果文件中行的顺序不重要的话。

代码语言:javascript
复制
# get lines to be translated
grep '[a-z0-9]' input.txt | sed -f CONV-HYPY2BPMF.SED > output.txt

# append lines that are not to be translated
grep -v '[a-z0-9]' input.txt >> output.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70223703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档