如何添加多个字符串以搜索同一文件:
目前:
#!/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
答案 0 :(得分:0)
您可以使用嵌套循环。
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
答案 1 :(得分:0)
您最好使用实际的编程语言,例如awk
。
如果您想要计算每个模式的总出现次数(可能超过每个模式出现的行数,如果模式在一行中出现多次),您可以使用grep的-o
选项输出实际匹配,然后使用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