需要Grep命令说明

时间:2013-03-19 12:41:39

标签: linux bash shell awk grep

有人解释我这个grep命令

grep "click" /opt/tomcat/logs/localhost_access_log.2013-03-19.txt \
  | awk -F: '{if (($3 >= $hr) && ($4 >= $min)) print $0}' | wc -l

3 个答案:

答案 0 :(得分:1)

Grep查找包含字符串click的所有行。这些行传递给awk,它只打印第三个字段大于或等于shell变量$hr的行,第四个字段大于或等于shell变量{{1}其中字段分隔符为$min (尽管由于引用而不会展开这些shell变量)。然后使用:来计算匹配数。目前,由于shell变量未被扩展,管道将不会显示预期的行数。

您的管道可以使用简单的wc -l脚本替换(并修复)

awk

答案 1 :(得分:0)

管道中有三个流程:

  1. grep查找日志文件中包含“click”一词的所有行,并将其传递给awk
  2. awk使用:分隔符将行划分为字段。如果第3个字段大于指定的hr并且第4个字段大于指定的mins,它会打印出该行,但我看不到您在哪里设置$hr$min
  3. 最后,wc计算由awk打印的行。

答案 2 :(得分:0)

grep "click" /opt/tomcat/logs/localhost_access_log.2013-03-19.txt在给定文件中搜索单词click

awk -F: '{if (($3 >= $hr) && ($4 >= $min)) print $0}'使用分隔符:拆分grep中的每个结果。如果第3个元素大于$hr且第4个元素大于$min,则打印第1个元素。

wc -l计算所有打印元素。

所以看起来该命令正在计算日志文件中有多少行的时间戳大于指定的小时和分钟。