developer tip

파일 내에서 문자열의 발생을 어떻게 계산할 수 있습니까?

optionbox 2020. 11. 29. 10:12
반응형

파일 내에서 문자열의 발생을 어떻게 계산할 수 있습니까?


이 코드를 예로 들어 보겠습니다. HTML / 텍스트 파일 인 것처럼 가장하여 echo나타나는 총 횟수를 알고 싶다면 bash를 사용하여 어떻게 할 수 있습니까?

new_user()
{
    echo "Preparing to add a new user..."
    sleep 2
    adduser     # run the adduser program
}

echo "1. Add user"
echo "2. Exit"

echo "Enter your choice: "
read choice


case $choice in
    1) new_user     # call the new_user() function
       ;;
    *) exit
       ;;
esac 

그러면 검색 문자열이 포함 된 수가 출력됩니다 .

grep -c "echo" FILE

그러나 이것은 파일의 발생 횟수를 계산하지 않습니다 (즉, 한 줄에 여러 번 에코가있는 경우).

편집하다:

조금 놀아 본 후, 다음과 같은 코드를 사용하여 발생 횟수를 얻을 수 있습니다.

sed 's/echo/echo\n/g' FILE | grep -c "echo"

이것은 기본적으로 모든 echo 인스턴스 다음에 개행을 추가하여 각각 자체 라인에 있으므로 grep이 해당 라인을 계산할 수 있습니다. 예를 들어 "echoing"이 아닌 "echo"라는 단어 만 원하는 경우 정규식을 구체화 할 수 있습니다.


with option 및 (word count)를 사용하여 문자열 발생 횟수 ( lines 아님)를 얻을 수 있습니다 .grep-owc

$ echo "echo 1234 echo" | grep -o echo
echo
echo
$ echo "echo 1234 echo" | grep -o echo | wc -l
2

따라서 문제에 대한 전체 솔루션은 다음과 같습니다.

$ grep -o "echo" FILE | wc -l

나는 당신이 요구하는 것을 이해하지 못하기 때문에 여기에서 몇 가지 추측을하고 있습니다.

나는 당신이 원하는 것은 주어진 파일에 'echo'패턴이 나타나는 줄 수라고 생각합니다.

샘플 텍스트를 6741967.

먼저 grep일치하는 항목을 찾습니다.

james@Brindle:tmp$grep echo 6741967 
    echo "Preparing to add a new user..."
echo "1. Add user"
echo "2. Exit"
echo "Enter your choice: "

둘째, wc -l줄을 세는 데 사용

james@Brindle:tmp$grep echo 6741967  | wc -l
       4

발생 횟수 만 원하면 다음과 같이 할 수 있습니다. $ grep -c "string_to_count"file_name

참고 URL : https://stackoverflow.com/questions/6741967/how-can-i-count-the-occurrences-of-a-string-within-a-file

반응형