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
为什么不运行所需的结果脚本?