방향 편향 처벌


16

I가 사용하고 tre-agrep (맨) 의 일 구현 agrep (맨)을 근사 패턴 매칭을 수행하는. 이 유틸리티는 Levenshtein distance를 기준으로 일치하는 항목을 검색 하며 사용자는 대체, 삽입 또는 삭제 편집에 적용되는 페널티를 구성 할 수 있습니다.

그러나 쿼리 길이에 따라 다르게 가중치를 적용하고 싶습니다. 즉, 쿼리 시작 (왼쪽 끝)에서 오른쪽보다 삭제에 대한 가중치가 낮습니다. man이 유틸리티 의 페이지는 그러한 수준의 제어가 가능하다는 것을 나타내지 않습니다.

불일치 페널티에 대한보다 세밀한 제어가 가능한 다른 명령 행 도구가 있습니까?


5
AFAIK, agrep만이 유일합니다. 유닉스 세계에서의 상대적인 모호함 (너무 나쁘다)을 알면 놀랍습니다. 이론적으로 소스 코드에서 이러한 가중치를 조정할 수 있지만 그것이 실용적이든 아니든 모르겠습니다. 도구의 작성자 또는 도구의 기초가되는 원본 문서에 문의 해 보셨습니까? 당신은 마음에, 그들은 아마 지금
구세대입니다

3
@Otheus 구세대는 여전히 코드를 작성할 수 있습니다 ;-)
Kusalananda

Python 또는 Awk에서 표현식으로 정의 된 삽입 / 삭제 / 대체 비용으로 Levenshtein-matching 유틸리티를 작성하는 것은 어렵지 않습니다. 지루한 부분은 실제로 가능한 모든 명령 줄 옵션입니다. OP가 전형적인 명령 줄을 보여주고 agrep실제로 필요한 옵션을 알려주는 경우 무언가를 채울 수 있습니다. 두 줄의 레 벤슈 테인 거리를 계산하는 것은 정말 쉽습니다. GNU awk 호출을 감싸는 쉘 스크립트를 제안합니다.
명목 동물

답변:


1

아니요. 이러한 종류의 사용자 정의는 Linux 도구의 범위를 벗어나 자체 코드를 작성하는 범위에 속합니다. 널리 사용되는 고급 언어 (Java, JavaScript, Python, Perl)를 사용하면 C보다 약간 더 많은 메모리를 사용하고 스크립트 언어의 경우 약간 느리지 만 사용 사례에서는 무시할 수 있습니다. 따라서 필요한 세부 정보를 사용하여 스택 오버플로를 다시 요청하면 누군가가 하나의 라이너를 제공 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.