[英]awk or sed - print multiple pattern with variable in one line
for array in $arrays; do count=$(sed '/Error/!d;/$array/!d' $logfile | wc -l) #awk -v array=$array "/Error/ && /$array/" $logpath | wc -l echo "$count - $array" done
我知道如何用 grep 做到这一点,但我不能使用它。 两种模式必须在同一行中。 我正在遍历一个包含字符串的数组。 非常感谢帮助。
编辑:我正在寻找字符串“Error”和 $array - 其中包含我正在循环的字符串。 我正在搜索一个文件,并希望打印在一行中同时包含字符串“Error”和变量“$array”值的所有行。
/.../
不能包含对awk
变量的引用; 你需要使用等效的
$0 ~ array
反而。
awk -v "array=$array" -v count=0 '/Error/ && $0 ~ array { count++} END {print count }'
(也消除了对wc
的需要)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.