繁体   English   中英

awk 或 sed - 在一行中打印多个带有变量的模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM