파일 목록에서 단어 목록 컴파일

파일 목록에서 단어 목록 컴파일

사람들은 이 임무를 어떻게 수행할 것인가?

나는 tr로 그것을 시도했고 이것을 생각해 냈습니다 (다른 유사한 질문의 도움을 받아):

tr -c '[:alnum:]' '[\n*]' < long_concatenated_file

그런데... 문제가 있습니다. :alnum:단지 문자와 숫자의 목록일 뿐입니다. 읽은 후 나는 이 상황을 완화하려고 노력합니다 man.

tr -c '[:alnum:=-=]' '[\n*]' < long_concatenated_file

대시가 있는 단어는 교체할 항목 목록에 포함되어야 하지만, 어떤 이유에서는 그렇지 않습니다.

이 작업을 수행하는 올바른 방법은 무엇입니까?

명확하게 말하면 최종 목표는 sort | uniq -c | sort -nr이를 적용하고 프로젝트에서 가장 많이 사용되는 문자열을 식별하여 문제 해결 방법이 전혀 의미가 없고 일부 해결해야 하는 경우 이를 편리한 상수로 변환하는 것입니다. 다른 방법으로는 몇 가지 제안을 해주세요.

답변1

-단어가 아닌 모든 문자(영숫자)를 개행 문자로 바꾼 다음 이를 단어가 아닌 문자 집합에 포함시키려는 것 같습니다 .

이를 위해 (여기서는 유효한 단어 문자 tr도 포함했으며 출력에서 ​​연속된 개행 문자를 제거하는 데 사용했습니다):'-s

tr -s -c "[:alnum:]-'" '\n'

[=-=]또는 원하는 경우 동등 클래스를 사용하십시오.

tr -s -c "[:alnum:][=-=]'" '\n'

답변2

@Kusalandra, 답변해 주셔서 감사합니다. 하지만 그건 제가 하고 싶은 일이 아닙니다. 내 목표는 :alnum: set 또는 '-' 문자로 구성된 각 단어를 별도의 줄에 인쇄하는 것입니다.

결과 시퀀스는 다음과 같은 새 클래스를 생성하는 것입니다.

cat longfile | tr -c '[[:alnum:]-]' '[\n*]'

내가하고 싶은 일을하세요.

예:

$echo aaa-abc asdasd asswdwew | tr -c '[[:alnum:]-]' '[\n*]'
aaa-abc asdasd asswdwew

관련 정보