LibreOffice 및 LyX에서 사용할 아랍어 사전 파일을 만들었습니다. 여기에는 270만 개가 넘는 아랍어 단어가 포함되어 있습니다.
때로는 단어를 쓰는 데 사용할 수도 있고 ه
, ة
단어 끝에 있는 경우 쓰는 데 사용할 수도 있습니다.
sed
or 의 스크립트를 사용하여 tr
마지막 문자를 제외하고 동일한 단어가 두 개 있고 두 단어의 마지막 문자가 ة
and ه
이면 포함된 단어를 삭제한다고 말하고 싶습니다 ه
.
입력 예:
الجنة
الجنه
الشجرة
الشجره
산출:
الجنة
الشجرة
답변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에 추가하여 문자열과 정확히 일치 할 수 있습니다.