나는 새로운 언어로 어휘를 배우는 효율적인 방법을 찾으려고 노력하고 있습니다. 책이 포함된 파일을 사용하여 단어 목록을 만들고 싶습니다. 저는 Linux를 처음 접했고 도움을 주시면 대단히 감사하겠습니다.
제 생각에는:
텍스트 파일(예: txt 형식)을 입력으로 사용하고 첫 번째 파일의 모든 단일 단어 목록이 포함된 다른 파일을 출력하는 명령이 있습니다.
새 파일은 알파벳순으로 정렬되어야 하며 중복된 내용이 없어야 합니다(각 단어는 한 번만 포함되어야 합니다).
이상적으로는 명령이 두 번째 파일을 확인하고 해당 파일에 포함된 단어가 중복되는 것을 방지할 수 있어야 합니다. (이렇게 하면 내가 이미 알고 있고 반복하지 않을 파일이나 단어를 만들 수 있습니다.)
이를 수행하는 데 적합한 명령이 있습니까?
답변1
"단어"가 일련의 단어로 정의된 경우"말이 성격을 만든다"(보통 문자, 숫자 및/또는 밑줄로 정의됨) 그런 다음 GNU를 사용하여 원하는 작업을 수행할 수 있습니다 awk
.sort
awk -v RS='\\W+' 'ARGIND==1{arr[$0]; next} !($0 in arr)' skip file | sort -u
skip
file
인쇄하고 싶지 않은 책이 포함된 단어 파일은 어디에 있습니까 ?
\W
그냥 약어입니다 [^[:alnum:]_]
. 다만, "단어"에 대한 정의에 숫자가 포함되어 있지 않으면 로 변경하고 RS='\\W+'
, RS='[^[:alpha:]_]+'
아포스트로피와 하이픈이 포함되어 있으면 로 변경 하거나, 여러분이 생각하는 문자 집합 정의의 부정과 일치하도록 RS="[^[:alpha:]_'-]+"
변경하세요. RS
다른 내용의 단어를 구성합니다."
awk를 배우려면 Arnold Robbins의 Effective AWK 프로그래밍 5판을 읽어보세요.