Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash for循环grep-wc中的多个字符串_Bash_For Loop_Grep - Fatal编程技术网

Bash for循环grep-wc中的多个字符串

Bash for循环grep-wc中的多个字符串,bash,for-loop,grep,Bash,For Loop,Grep,如何添加多个字符串以搜索同一文件: 目前: #!/bin/bash for log in filename.log.201[45]-*-*.gz; do printf '%s:' "$log" zcat "$log" | grep -wc 'dollar for dollars' done 预期结果: #!/bin/bash for log in filename.log.201[45]-*-*.gz; do printf '%s:' "$log" echo

如何添加多个字符串以搜索同一文件:

目前:

#!/bin/bash

for log in filename.log.201[45]-*-*.gz; do
    printf '%s:' "$log"
    zcat "$log" | grep -wc 'dollar for dollars'
done
预期结果:

#!/bin/bash

for log in filename.log.201[45]-*-*.gz; do
    printf '%s:' "$log"
    echo "count for dollar for dollars"
    zcat "$log" | grep -wc 'dollar for dollars'

    echo "count for pollar for pollars"
    zcat "$log" | grep -wc 'pollar for pollars'
done

您可以对此循环使用嵌套循环

for count in 'dollar for dollars' 'pollar for pollars'; do 
 for log in filename.log.201[45]-*-*.gz; do
     printf '%s:' "$log"
     echo -n $count : 
     zcat "$log" | grep -wc "$count"
  done
done

您最好使用实际的编程语言,如
awk

如果要计算每个模式的总出现次数(如果模式在一行中出现多次,则可能超过每个模式出现的行数),可以使用
-o
选项grep以输出实际匹配,然后使用
sort | uniq-c
构建最终报告,计算输出流中每个唯一行的出现次数。它允许您使用
-e
选项向单个grep命令提供多个模式:

for log in filename.log.201[45]-*-*.gz; do
  zcat "$log" |
  grep -e "pattern 1" -e "pattern 2" -ow |
  sort | uniq -c |
  xargs -d\\n printf "${log//%/%%}:%s\n"
done
为什么不运行所需的结果脚本?