Подтвердить что ты не робот

Как я могу подсчитать вхождения строки в файл?

Просто возьмите этот код в качестве примера. Притворяясь, что это 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 
4b9b3361

Ответ 1

Это будет выводить количество строк, содержащих вашу строку поиска.

grep -c "echo" FILE

Это, однако, не будет подсчитывать количество вхождений в файле (т.е. если у вас есть эхо несколько раз в одной строке).

изменить:

После небольшой игры вы можете получить количество вхождений, используя этот грязный маленький код:

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

Это в основном добавляет новую строку после каждого экземпляра эха, поэтому каждый из них находится в своей собственной строке, позволяя grep подсчитывать эти строки. Вы можете уточнить регулярное выражение, если хотите только слово "эхо", в отличие от "эхо", например.

Ответ 2

Число строк (не строк) может быть получено с помощью grep с опцией -o и wc (количество слов):

$ 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

Ответ 3

Я принимаю некоторые догадки здесь, потому что я не совсем понимаю, о чем вы спрашиваете.

Я думаю, что то, что вы хотите, - это подсчет количества строк, на которых в данном файле появляется символ "эхо".

Я вложил ваш образец текста в файл с именем 6741967.

Сначала grep находит совпадения:

[email protected]:tmp$grep echo 6741967 
    echo "Preparing to add a new user..."
echo "1. Add user"
echo "2. Exit"
echo "Enter your choice: "

Во-вторых, используйте wc -l для подсчета строк

[email protected]:tmp$grep echo 6741967  | wc -l
       4

Ответ 4

если вы просто хотите количество вступлений, тогда вы можете это сделать, $ grep -c "string_to_count" file_name