我制作了阿拉伯语词典文件,以便在 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 以完全匹配字符串