最后一个字母不同的两个单词(阿拉伯语)

最后一个字母不同的两个单词(阿拉伯语)

我制作了阿拉伯语词典文件,以便在 LibreOffice 和 LyX 中使用。它包含超过 270 万个阿拉伯语单词。

有时,我们可以用 来书写单词ه,有时,ة如果它位于单词的末尾,则可以用 来书写。

我想用sed或 的脚本tr表示,如果有两个单词相同,除了最后一个字母,并且这两个单词的最后一个字母是ةه,则删除包含 的单词ه

输入示例:

الجنة
الجنه
الشجرة
الشجره

输出:

الجنة 
الشجرة

答案1

尝试这个:

awk -v TA=ة -v HA=ه '
        { orig = $0 }
        sub(HA"$", TA) { $0 in ta || ha[$0] = orig; next }
        $0 ~ TA"$" { ta[$0] = 1; delete ha[$0] }
        { print }
        END{ for(i in ha) print ha[i] }
' input_file | LC_ALL=C sort -u > output_file

我尝试通过创建自定义来做一些更聪明的事情LC_COLLATE,但没有成功;-)

答案2

也许是这样的: cat yourDictionary |grep -i yourWord |sed /$ه/d

/$ه/d- 删除以特殊符号结尾的所有内容(d 标志用于删除) grep -i- 以不区分大小写的方式匹配 此外,您还可以添加-w到 grep 以完全匹配字符串

相关内容