如何计算文件中字符串的出现次数?

Leo*_*han 65 bash search

以此代码为例.假装它是一个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 
Run Code Online (Sandbox Code Playgroud)

Dmi*_*try 136

使用with 选项和(字数)可以获得字符串出现次数(不是):grep-owc

$ echo "echo 1234 echo" | grep -o echo
echo
echo
$ echo "echo 1234 echo" | grep -o echo | wc -l
2
Run Code Online (Sandbox Code Playgroud)

所以问题的完整解决方案如下所示:

$ grep -o "echo" FILE | wc -l
Run Code Online (Sandbox Code Playgroud)

  • 请小心,如果 grep 认为该文件是“二进制”,您每次都会得到“1”输出,如果您愿意,添加“-a”只是为了安全...... (2认同)

Man*_*y D 78

这将输出包含搜索字符串的数.

grep -c "echo" FILE
Run Code Online (Sandbox Code Playgroud)

但是,这不会计算文件中出现的次数(即,如果在一行上有多次回显).

编辑:

在玩了一下之后,你可以使用这个脏的一点代码获得出现的次数:

sed 's/echo/echo\n/g' FILE | grep -c "echo"
Run Code Online (Sandbox Code Playgroud)

这基本上在每个echo实例之后添加一个换行符,因此它们各自都在自己的行上,允许grep计算这些行.例如,如果您只想要单词"echo"而不是"echoing",则可以优化正则表达式.