以此代码为例.假装它是一个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)
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",则可以优化正则表达式.