用于匹配egrep中错误字符的动态模式

时间:2017-08-03 18:57:01

标签: regex bash

我在文件中有下一行:

UserParameter=cassandra.status[*], curl -s "http://$1:$2/server-status?auto" | grep -e $3 | awk '{ print $$2 }'

UserParameter=ping.status[*],curl -s --retry 3 --max-time 3 'http://localhost:1111/engines?$1' | awk '/last_seen = / {split($$1, a, "/"); print a[2]}; END { if (!NR) print "NO_MATCHING_ENGINES" }' | tr "\n" " 

等等。

我想显示错过[*]后的逗号或除逗号外还有其他字符的行。

例如:

UserParameter=ping.status[*],,,curl -s --retry 3 --max-time 3 'http://localhost:1111/engines?$1' | awk '/last_seen = / {split($$1, a, "/"); print a[2]}; END { if (!NR) print "NO_MATCHING_ENGINES" }' | tr "\n" " 
UserParameter=ping.status[*] curl -s --retry 3 --max-time 3 'http://localhost:1111/engines?$1' | awk '/last_seen = / {split($$1, a, "/"); print a[2]}; END { if (!NR) print "NO_MATCHING_ENGINES" }' | tr "\n" " 
UserParameter=ping.status[*],;!curl -s --retry 3 --max-time 3 'http://localhost:1111/engines?$1' | awk '/last_seen = / {split($$1, a, "/"); print a[2]}; END { if (!NR) print "NO_MATCHING_ENGINES" }' | tr "\n" " 
只要单个逗号旁边有额外的字符和空格,就会打印

但是:

UserParameter=ping.status[*],curl -s --retry 3 --max-time 3 'http://localhost:1111/engines?$1' | awk '/last_seen = / {split($$1, a, "/"); print a[2]}; END { if (!NR) print "NO_MATCHING_ENGINES" }' | tr "\n" " 
只要[*]之后有单个逗号,就不会打印

我正在尝试为egrep开发一个模式,但它并不适合所有情况,例如除了逗号之后的任何其他字符[*]之后:

egrep (\[\*\].(|;|:|,|\.|))

我会感激任何帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

grep -vE '\[\*\],[$/[:alpha:] ]' input

打印与模式匹配的行:[*],后跟以下任意内容:$/,字母字符或{{1} }。