Необходимо создать сценарий awk
для преобразования glyph
(https://en.wikipedia.org/wiki/Glyph) в Unicode
(JavaScript
синтаксис), а обратный - в Юникод к глифу.Использование awk, как заменить одну строку на другую?
Исходные данные хранятся в NotePad++
с кодировкой UTF-8
.
Вот мой прогресс.
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>
, чтобы указать ' символ "между словами и после запятой. Вероятно, это означает, что решение должно использовать \t
для FS
как в файле словаря, так и в файле ввода. В настоящее время FS
является «пространством клавиатуры». Также RS
- \n
.
Кроме того, мне нужно сделать то же самое для шестнадцатеричного, поэтому решение нужно обработать файл словаря, как это:
Í Í
Ó Ó
по сравнению с Dictionary примере выше:
Í \u00CD
Ó \u00D3
Как улучшить или заменить мои простые сценарии awk
скриптами, которые обрабатывают более длинные строки на нескольких строках?
вау. этот вопрос слишком длинный. Как насчет сокращения? – NinjaGaiden
Вопрос: 'Как улучшить или заменить мои простые скрипты awk скриптами, которые обрабатывают более длинные строки на нескольких строках?'. Текст показывает прогресс (MCV) и данные, которые, надеюсь, могут быть обработаны предлагаемым решением. –