Bash 自动删除希腊语文本中的变音符号

Bash 自动删除希腊语文本中的变音符号,bash,diacritics,transliteration,Bash,Diacritics,Transliteration,我有一个反编译的stardict字典,它是一个tab文件 κακός <tab> bad κακός坏 其中表示制表 不幸的是,单词的定义方式要求查询包含所有的变音符号。所以如果我想搜索ζῷον,我需要所有IOTA和旋转都正确 因此,我想转换整个文件,以便关键字删除变音符号。所以这条线就变成了 κακος <tab> <h3>κακός</h3> <br/> bad κακοςκακός坏 我知道我可以在bash中逐行读取该文件

我有一个反编译的stardict字典,它是一个tab文件

κακός <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的好问题