마지막 글자가 다른 두 단어(아랍어)

마지막 글자가 다른 두 단어(아랍어)

LibreOffice 및 LyX에서 사용할 아랍어 사전 파일을 만들었습니다. 여기에는 270만 개가 넘는 아랍어 단어가 포함되어 있습니다.

때로는 단어를 쓰는 데 사용할 수도 있고 ه, ة단어 끝에 있는 경우 쓰는 데 사용할 수도 있습니다.

sedor 의 스크립트를 사용하여 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- 대소문자를 구분하지 않고 일치합니다. 또한 -wgrep에 추가하여 문자열과 정확히 일치 할 수 있습니다.

관련 정보