Bash 自动删除希腊语文本中的变音符号
我有一个反编译的stardict字典,它是一个tab文件Bash 自动删除希腊语文本中的变音符号,bash,diacritics,transliteration,Bash,Diacritics,Transliteration,我有一个反编译的stardict字典,它是一个tab文件 κακός <tab> bad κακός坏 其中表示制表 不幸的是,单词的定义方式要求查询包含所有的变音符号。所以如果我想搜索ζῷον,我需要所有IOTA和旋转都正确 因此,我想转换整个文件,以便关键字删除变音符号。所以这条线就变成了 κακος <tab> <h3>κακός</h3> <br/> bad κακοςκακός坏 我知道我可以在bash中逐行读取该文件
κακός <tab> bad
κακός坏
其中
表示制表
不幸的是,单词的定义方式要求查询包含所有的变音符号。所以如果我想搜索ζῷον,我需要所有IOTA和旋转都正确
因此,我想转换整个文件,以便关键字删除变音符号。所以这条线就变成了
κακος <tab> <h3>κακός</h3> <br/> bad
κακοςκακός
坏
我知道我可以在bash中逐行读取该文件,如下所述[1]
while read line
do
command
done <file
读取行时
做
命令
完成我对古希腊语的熟悉程度不如对现代希腊语的熟悉程度(现代希腊语只使用了两个发音符号)
然而,我仔细检查了元音,找出了哪些元音与变音符号相结合。这给了我以下清单:
ἆἂᾶὰάἀἄ
ἒὲέἐἔ
ἦἢῆὴήἠἤ
ἶἲῖὶίἰἴ
ὂὸόὀὄ
ὖὒῦὺύὐὔ
ὦὢῶὼώὠὤ
我将此列表保存为文件,并将其传递给此sed
cat test.txt | sed -e 's/[ἆἂᾶὰάἀἄ]/α/g;s/[ἒὲέἐἔ]/ε/g;s/[ἦἢῆὴήἠἤ]/η/g;s/[ἶἲῖὶίἰἴ]/ι/g;s/[ὂὸόὀὄ]/ο/g;s/[ὖὒῦὺύὐὔ]/υ/g;s/[ὦὢῶὼώὠὤ]/ω/g'
这是一个简单的sed。它接受每个选项并将其替换为未标记的字符。上述命令的结果是:
ααααααα
εεεεε
ηηηηηηη
ιιιιιιι
οοοοο
υυυυυυυ
ωωωωωωω
关于希腊语的音译:你文章中的图像是为了帮助用户在网站上输入希腊语,你使用的是类似的字形,而不总是类似的声音。这些是糟糕的音译。e、 g.β最常被音译为v。ψ是ps,φ是ph,等等。使用Perl可以相对容易地从字符串中删除变音符号:
$_=NFKD($_);s/\p{InDiacriticals}//g;
例如:
$ echo 'ὦὢῶὼώὠὤ ᾪ' | perl -CS -MUnicode::Normalize -pne '$_=NFKD($_);s/\p{InDiacriticals}//g'
ωωωωωωω Ω
这项工作如下:
-CS
为Perl的stdin/stdout启用UTF8
-MUnicode::Normalize
加载用于Unicode规范化的库
-e
从命令行执行脚本<代码>-n
自动循环输入中的行<代码>-p自动打印输出
NFKD();这意味着重音和变音符号被分解成单独的字符,这使得在下一步中更容易删除它们
s/\p{InDiacriticals}//g
删除Unicode表示为变音符号的所有字符事实上,对于所有具有良好Unicode支持的脚本/语言(不仅仅是希腊语)来说,这应该可以去除发音符号等。谁是珀尔修斯?我的意思是,我知道他是谁,但他是否足以成为一个半神,拥有某种属于他的方法?我的意思是:我不知道你所说的“没有利用它”是什么意思。您是说您无法安装
iconv
来进行所需的转换,还是说由于某种原因,您没有安装iconv
(并且无法安装)?(请用此信息更新您的问题,而不是在此处回答,我将删除此信息)。祝你好运。关于希腊语的音译:该图像旨在帮助用户在该网站上使用类似的字形,而不总是使用类似的声音输入希腊语。这些是糟糕的音译。e、 g.β最常被音译为v。ψ是ps,φ是ph,等等。詹姆斯·韦伯斯特:那么呢ὧ? 有两种精神,三种口音和下标iota。对于每个可能的长元音(除了ο和ε之外),我们有3*4*2-1=23个选项。我不想用手来定义这一切。音译的意思是给出1:1的音译(每个希腊字母对应一个拉丁字母)。此外,在古希腊,β发音为b;)因此,野蛮人(βρβαρος)而非瓦瓦里安:)但这只是一个例子,关键点在于自动化,即使用多音键盘和按键组合。如果组合成一封信。。我保留了它。关于不同的选择。。您只需要输入这些组合一次。为您创建组合似乎比创建程序更容易。即使所有6个元音都有23个选项,你也只需要输入138个字符。不,是原来的2倍多。因为也有大写字母。这比你需要输入的字符还要少,你需要编写一个程序来生成这些字符。。大概这将是一个关于PGC的好问题