我的中文輸入法所用的字典檔案中有超過 10 萬個拼音條目。部分投稿人不能輸入注音(bopomofo),只能輸入拼音(帶數字聲調)。
我寫了一個 sed 腳本,它可以自動將這種拼音符號轉換為注音。但是, sed 需要很長時間才能在整個檔案中執行此操作,因為 sed 檔案本身很大......幾乎有 500 行正則運算式。
我在想sed是不是只能對那些包含拼音的行觸發?
樣本輸入:
鸞膠續斷 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):
sed -i '' -f ./CONV-HYPY2BPMF.SED SAMPLE_INPUT.txt
sed 腳本示例:https : //github.com/ShikiSuen/vchewing-lingual-data/blob/main/utilities/CONV-HYPY2BPMF.SED
期望的輸出:
鸞膠續斷 ㄌㄨㄢˊ ㄐㄧㄠ ㄒㄩˋ ㄉㄨㄢˋ
鸞駕 ㄌㄨㄢˊ ㄐㄧㄚˋ
鸞儔鳳侶 ㄌㄨㄢˊ ㄔㄡˊ ㄈㄥˋ ㄌㄩˇ
鸞輿 ㄌㄨㄢˊ ㄩˊ
鸞鵠停峙 ㄌㄨㄢˊ ㄏㄨˊ ㄊㄧㄥˊ ㄓˋ
鸞飄鳳泊 ㄌㄨㄢˊ ㄆㄧㄠ ㄈㄥˋ ㄅㄛˊ
鸞鶴 ㄌㄨㄢˊ ㄏㄜˋ
鸞鑑 ㄌㄨㄢˊ ㄐㄧㄢˋ
灩澦堆 ㄧㄢˋ ㄩˋ ㄉㄨㄟ
灩灩 ㄧㄢˋ ㄧㄢˋ
籲天 ㄩˋ ㄊㄧㄢ
籲求 ㄩˋ ㄑㄧㄡˊ
籲請 ㄩˋ ㄑㄧㄥˇ
麤服亂頭 ㄘㄨ ㄈㄨˊ ㄌㄨㄢˋ ㄊㄡˊ
麤疏 ㄘㄨ ㄕㄨ
麤糲 ㄘㄨ ㄌㄧˋ
齾齾 ㄧㄚˋ ㄧㄚˋ
齉鼻兒 ㄋㄤˋ ㄅㄧˊ ㄦ
?葉 ㄜˋ ㄧㄝˋ
?岈 ㄏㄢ ㄒㄧㄚ
?遽 ㄌㄧㄥˊ ㄐㄩˋ
?墨 ㄊㄧㄢˇ ㄇㄛˋ
?身 ㄙㄨㄥˇ ㄕㄣ
?毿 ㄌㄢˊ ㄙㄢ
?? ㄍㄨㄛˊ ㄍㄨㄛˊ
?水 ㄌㄟˊ ㄕㄨㄟˇ
?子 ㄍㄨˇ ㄗ˙
?箕 ㄕㄠ ㄐㄧ
?羯 ㄨㄚˋ ㄐㄧㄝˊ
?外 ㄔㄨㄚˋ ㄨㄞˋ
?鬖 ㄌㄢˊ ㄙㄢ
?兒 ㄗㄨㄢˇ ㄦ
?? ㄖㄨˊ ㄖㄨˊ
uj5u.com熱心網友回復:
如果檔案中的行順序無關緊要。
# 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/373045.html
上一篇:Linux日期函式向前/向后時間
