开发者社区> 问答> 正文

如何在Linux中使用for循环计数并打印出一组单词

我正在尝试学习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

除此之外,是否可以搜索循环中不包含的单词并打印出这些单词?

我真的很陌生,如果有人可以帮助我解决这个“简单”的问题,我将感到非常高兴。

展开
收起
祖安文状元 2020-01-16 17:04:30 613 0
1 条回答
写回答
取消 提交回答
  • 如果您对命令的输出有严格要求,如下所示:

    =======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命令更

    2020-01-16 17:05:35
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载