我正在尝试学习Linux及其命令,但是我怀疑我找不到任何响应...
我需要在特定时间内(例如:10:00-11:00)在一系列文件中进行搜索并计算一些单词(例如猫,狗,鱼),但是我不知道该如何继续。
我试图使用for循环使此操作更容易,但是我不知道如何使用我要查找的单词来分隔和打印名称文件。例如:
=======file_10:01 dogs 10 results
=======file_10:01 cats 231 results
等等...
这是我正在执行的代码:
for i in `filename_time*`; do
echo "==================== $i"
zcat $i | grep -c "dogs"
done
除此之外,是否可以搜索循环中不包含的单词并打印出这些单词?
我真的很陌生,如果有人可以帮助我解决这个“简单”的问题,我将感到非常高兴。
如果您对命令的输出有严格要求,如下所示:
=======file_10:01 dogs 10 results
=======file_10:01 cats 231 results
并且您只需要打印文本与您的单词匹配的行数,那么您应该执行以下操作:
for i in filename_time*; do # do globbing like this
for word in dogs cats; do # list of words to search for
n=`zcat $i | grep -c "$word"` # get n first
echo "=======$i $word $n results" # now print the spec
done
done
但是,如果需要打印单词在文件中出现的次数,则必须对单词在文件的每一行上进行标记化,将每个标记写在单独的行上,然后执行grep。换句话说,您必须在管道中插入另一个命令以标记化由编写的每一行上的单词zcat。而且,如果您不想dogstand匹配dogs,则还必须将grep命令更
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。