处理“汉字编码.txt”的全过程: | sed "y/abcdefghijklmnopqrstuüwxyz/abcdefghijklmnopqrstuvwxyz/" 汉字编码.txt>2.txt | | :: 替换拼音为英文字符COPY |
| sed -n "H;/^$/{x;s/\n/ /g;p;s/.*//;x}" 2.txt>3.txt | | ::合并拼音与其对应内容为一行COPY |
| sed "s/[0-9]//g;s/ *[a-z] 返回↑/\n /g;s/ *$//g;s/ / /g" 3.txt>4.txt | | ::去除多余内容COPY |
| @echo off&setlocal enabledelayedexpansion | | (for /f "tokens=1*" %%a in (4.txt) do ( | | set max=&set min=祚 | | for %%c in (%%b) do ( | | if %%c lss !min! set min=%%c | | if %%c gtr !max! set max=%%c | | )>con | | if !min! gtr !lax! echo %%a !min!>>6.txt | | set lax=!max! | | set lin=!min! | | echo %%a@!min!@!max! | | ))>5.txt | | pause | | ::分别提取每个拼音的最大最小字符到 5.txt 和 6.txtCOPY |
| sed -n "H;${g;s/\n/ /g;p}" 6.txt>7.txt | | ::合并行COPY |
::生成 8.txt 时以为大功告成,结果发现字符顺序有误(有多音字的原因)导致结果出错,代码未保留。COPY
| @echo off&setlocal enabledelayedexpansion | | set lit=吖 | | set input=埃 挨 哎 唉 哀 皑 癌 蔼 矮 艾 碍 爱 隘 捱 嗳 嗌 嫒 瑷 暧 砹 锿 霭 | | set lpy=ai | | for /f "skip=2 delims=" %%A in (4处理.txt) do ( | | set str= | | for /f "tokens=1*" %%B in ("%%A") do set py=%%B&set next=%%C | | for /f %%a in ("!next!") do set big=%%a | | echo !lit!~!big!:!input! | | for %%a in (!input! !G!) do ( | | if %%a gtr !lit! ( | | if %%a lss !big! ( | | set str=!str! %%a | | set G=!G: %%a=! | | ) else echo G %%a&set G=!G: %%a=! %%a | | ) else echo L %%a&set /p=%%a <nul>>Lit.txt | | ) | | echo>>9.txt !lpy! !str! | | echo @!str!@ | | for /f %%B in ("!input!") do set lit=%%B | | set input=!next! | | set lpy=!py! | | echo; | | pause | | cls | | ) | | pause | | ::重新排序,将位置超前的字符安置到相应的拼音下,而位置滞后的字符输出到 Lit.txt 准备进行手工处理,生成 9.txtCOPY |
::手工处理,将 Lit.txt 中的字符按其可能的拼音依次尝试,补全 9.txt 中缺失的内容。COPY
| @echo off&setlocal enabledelayedexpansion | | set A=吖 | | for /f "skip=1 tokens=2" %%a in (9.txt) do ( | | if !A! lss %%a (echo !A! lss %%a) else echo !A! gtr %%a!!!!!!!&echo !A! lss %%a>>10.txt | | set A=%%a | | pause | | ) | | echo end | | ping /t localhost>nul | | ::修正拼音顺序,生成 10.txt,用于对 9.txt 纠错COPY |
| @echo off&setlocal enabledelayedexpansion | | (for /f "tokens=1*" %%a in (9.txt) do ( | | set str=%%b | | for /f %%c in ("%%b") do set last=%%c | | for %%c in (%%a) do ( | | for %%d in (!str!) do ( | | if %%d lss !last! ( | | for %%e in (!last!) do ( | | set str=!str:%%e %%d=%%d %%e! | | set last=%%e | | ) | | ) else set last=%%d | | ) | | ) | | echo %%a !str! | | ))>11.txt | | pause | | ::修正行内汉字顺序为从小到大COPY |
| @echo off | | (for /f "tokens=1,2" %%a in (11.txt) do set /p=%%b %%a )<nul>12.txt | | ::再手工加上 11.txt 中的最后一个汉字作为拼音 zuo 的上限。历经 11 关磨难,终于搞定,泪奔...COPY |
|