스크립트를 사용하여 파일에서 단어의 빈도를 찾아보세요.

스크립트를 사용하여 파일에서 단어의 빈도를 찾아보세요.

내가 가지고 있는 파일은 test이며 다음 줄이 포함되어 있습니다.

This is a test Test test test There are multiple tests.

나는 출력을 다음과 같이 원한다:

test@3 tests@1 multiple@1 is@1 are@1 a@1 This@1 There@1 Test@1

다음 스크립트가 있습니다.

 cat $1 | tr ' ' '\n' > temp # put all words to a new line
    echo -n > file2.txt # clear file2.txt
    for line in $(cat temp)  # trace each line from temp file
    do
    # check if the current line is visited
     grep -q $line file2.txt 
     if [ $line==$temp] 
     then
    count= expr `$count + 1` #count the number of words
     echo $line"@"$count >> file2.txt # add word and frequency to file
     fi
    done

답변1

sort | uniq -c | sort -n빈도표를 만드는 데 사용됩니다 . 원하는 형식을 얻으려면 더 많은 조정이 필요합니다.

 tr ' ' '\n' < "$1" \
 | sort \
 | uniq -c \
 | sort -rn \
 | awk '{print $2"@"$1}' \
 | tr '\n' ' '

답변2

grep+sort+uniq+sed관로:

grep -o '[[:alnum:]]*' file | sort | uniq -c | sed -E 's/[[:space:]]*([0-9]+) (.+)/\2@\1/'

산출:

a@1
are@1
is@1
multiple@1
test@3
Test@1
tests@1
There@1
This@1

답변3

$ 고양이>wdbag.py
#!/usr/bin/python

컬렉션에서 가져오기*
수입재시스템

text=''.join(sys.argv[1:])       

t=카운터(re.findall(r"[\w']+", text.lower()))

t 항목의 경우:
  항목 인쇄+"@"+str(t[항목])

$ chmod 755 wdbag.py

$ ./wdbag.py "여러 테스트가 포함된 테스트 테스트 테스트 테스트입니다."
a@1
테스트@1
다중@1
이@1
1이야
저기@1
1이야
테스트@4

$ ./wdbag.py 여러 테스트가 포함된 테스트 테스트 테스트 테스트입니다.
a@1
테스트@1
다중@1
이@1
1이야
저기@1
1이야
테스트@4

인용하다:https://stackoverflow.com/a/11300418/3720510

답변4

grep과 awk를 사용하세요.

 grep -o '[[:alnum:]]*' file | awk '{ count[$0]++; next}END {ORS=" "; for (x in count)print x"@"count[x];print "\n"}'

test@1 test@1 배수 @1 a@1 이 @1 여기 @1은 @1 test@3은 @1

관련 정보