한 줄에 한 문장씩 저장하는 텍스트 파일이 있는데 한 문장(파일의 한 줄)에 평균 몇 개의 단어가 있는지 알고 싶습니다. 어떻게 해야 하나요?
또한 이 파일의 고유 단어 수와 두 파일의 공통 고유 단어 수를 어떻게 계산합니까?
미리 감사드립니다
답변1
wc file
주어진 수의 줄, 단어 및 바이트가 표시됩니다 file
. 단어 대 줄의 비율은 줄당 평균 단어 수를 제공합니다.
고유 단어 수를 계산하려면 파일을 한 줄에 하나의 단어(여기서는 하나 이상의 공백으로 구분된 항목)로 분할하고 정렬한 다음 고유 단어 수를 계산합니다.
tr -s ' ' '\n' < file | sort -u | wc -l
구두점을 제거해야 하는 경우 정렬하기 전에 결과를 필터링해야 합니다(예를 들어원하지 않는 문자를 제거하기 위해 tr
).
두 파일의 고유 단어 수를 계산하려면 다음을 사용할 수 있습니다 comm
.
comm -3 <(tr -s ' ' '\n' < file1 | sort -u) <(tr -s ' ' '\n' < file2 | sort -u)
file1
file2
또는 둘 다에는 발생하지 않고에만 발생하는 단어가 나열됩니다 .
comm -12 <(tr -s ' ' '\n' < file1 | sort -u) <(tr -s ' ' '\n' < file2 | sort -u)
두 파일 모두에 나타나는 단어를 나열하고 wc -l
파이프를 통해 계산합니다.
여러 파일의 고유 단어 수를 계산하려면 다음으로 공급하기 전에 연결하세요 tr
.
cat file1 file2 | tr -s ' ' '\n' | sort -u | wc -l
답변2
그러면 한 줄당 평균 단어 수가 인쇄됩니다.
wc input.txt | awk '{print $2 / $1}'
귀하의 질문이 불분명하며 개선이 필요합니다. 그것이 정말로 당신의 문제를 해결할 수 있을지 모르겠습니다.
답변3
다음을 사용하여 단어 수를 계산합니다.행복하다(이전 Perl_6)
raku -e 'my @a.=push($_.words.elems) for lines; say @a; put @a.sum; put @a.elems; put @a.sum / @a.elems;'
입력 예:
the
the of
the of and
the of and in
the of and in a
the of and in a is
the of and in a is that
the of and in a is that for
the of and in a is that for it
the of and in a is that for it as
예제 출력:
[1 2 3 4 5 6 7 8 9 10]
55
10
5.5
위 내용은 Perl 계열의 프로그래밍 언어인 Raku로 작성된 답변입니다. 즉, Perl/Raku 테마 변수를 lines
반복하여 로드합니다. 배열을 선언하고 [단축키] 연산자를 사용하여 한 번에 배열에 입력을 추가합니다. 배열에 푸시된 실제 값은 각 행이 분류되어 계산에 사용되기 때문에 단어 수입니다. 마지막으로 출력은 , 및 -divided_by-를 사용하여 생성되어 평균을 얻습니다.for
$_
@a
$_
push
.=
@a = @a.push($_.words.elems)
@a
.words
.elems
sum
elems
sum
elems
항상 객체의 전체 기계 표현을 출력하려면 를 사용하십시오 put
. 를 사용하면 say
Raku 개체에 대해 사람이 더 읽기 쉽게 요약할 수 있습니다(99개 요소 이후 잘림).
[고유한 단어를 세는 방법에는 여러 가지가 있습니다. 아래 링크를 참조하세요 unique
. ]