![最后一个字母不同的两个单词(阿拉伯语)](https://linux22.com/image/152896/%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%AD%97%E6%AF%8D%E4%B8%8D%E5%90%8C%E7%9A%84%E4%B8%A4%E4%B8%AA%E5%8D%95%E8%AF%8D%EF%BC%88%E9%98%BF%E6%8B%89%E4%BC%AF%E8%AF%AD%EF%BC%89.png)
我制作了阿拉伯语词典文件,以便在 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 以完全匹配字符串