需要创建一个awk
脚本以将glyph
(https://en.wikipedia.org/wiki/Glyph)转换为Unicode
(JavaScript
语法),并将Unicode转换为字形。使用awk,如何用另一个字符串替换一个字符串?
源数据以UTF-8
编码存储在NotePad++
中。
这是我的进步。
Use_case_1
词典文件(dict_1_.txt):
A \u0041
À \u00C0
输入文件(input_1_.txt):
A
À
awk
脚本用于生成的Unicode等同于g lyph:
awk 'NR == FNR { a[$1] = $2; next } $1 in a { $1 = a[$1] } $2 in a { $2 = a[$2] } 1' dict_1_.txt input_1_.txt
正确制造:
\u0041
\u00C0
Use_case_2
词典文件(dict_2_.txt)
\u0041 A
\u00C0 À
输入文件(input_2_.txt)
\u0041
\u00C0
awk
脚本用于生成字形为等效的Unicode:
awk 'NR == FNR { a[$1] = $2; next } $1 in a { $1 = a[$1] } $2 in a { $2 = a[$2] } 1' dict_2.txt input_2.txt
正确制造:
A
À
所以,可以在成功地 “往返”单个符号。
但是,如何处理更全面的字典和每行多个字?
以下是样本数据。
输入文件(input_3_.txt)
PUDÍN, ALMIDÓN
词典文件(dict_3_。TXT)
, \u002C
A \u0041
D \u0044
I \u0049
Í \u00CD
L \u004C
M \u004D
N \u006E
Ó \u00D3
P \u0050
U \u0055
<space> \u0020
的awk
脚本应该产生:
\u0050\u0055\u0044\u00CD\u006E\u002C\u002C\u0041\u004C\u004D\u0049\u0044\u00D3\u006E
输入文件(input_4_.txt)
\u0050\u0055\u0044\u00CD\u006E\u002C\u002C\u0041\u004C\u004D\u0049\u0044\u00D3\u006E
字典文件(dict_4_.txt)
\u002C ,
\u0041 A
\u0044 D
\u0049 I
\u00CD Í
\u004C L
\u004D M
\u006E N
\u00D3 Ó
\u0050 P
\u0055 U
\u0020 <space>
的awk
脚本应生成:
PUDÍN, ALMIDÓN
下面是一个更复杂的设定输入的字符串(每行一个):
MONO Y DIACETIL ÉSTERES DEL ÁCIDO TARTÁRICO DE MONO Y DIGLICÉRIDOS DE ÁCIDOS GRASOS AÑADIDOS
043 HUEVAS DE PESCADO (INCLUYENDO ESPERMA=HUEVAS BLANDAS) Y VÍSCERAS COMESTIBLES DE PESCADO
ACEITE DE SOJA OXIDADO TÉRMICAMENTE Y EN INTERACCIÓN CON MONO Y DIGLICÉRIDOS DE ÁCIDOS GRASOS
BANDEJA PLÁSTICA O CAZUELA, CUBIERTA DE PAPEL DE ALUMINIO O ENVOLTURA
在上面的解释实施例中,已经使用<space>
指示'符号'之间和逗号后。这可能意味着在Dictionary文件和输入文件中解决方案应该使用\t
代替FS
。目前FS
是键盘“空间”。 RS
也是\n
。
此外,我需要做为十六进制相同的,所以一个解决方案需要处理词典文件是这样的:相比于上述字典示例
Í Í
Ó Ó
:
Í \u00CD
Ó \u00D3
如何改进或替换我的简单awk
脚本与处理多行更长的字符串的脚本?
哇。这个问题太长了。如何缩短它? – NinjaGaiden
问题是:'如何用多行处理较长字符串的脚本来改进或替换我简单的awk脚本?'。文本显示了进度(MCV)和希望可以通过建议的解决方案处理的数据。 –