比较bash awk命令中的通配符字符串

时间:2018-09-04 10:18:12

标签: bash shell awk

有没有办法像这样在“ awk”命令中将bash中的子字符串与通配符进行比较

awk '{for(i=1;i<=NF;i++) if ($i=="redis-*") print $(i+1)}' /etc/redis/sentinel.conf | head -1 我希望该命令从sentinel.conf文件中查找任何以“ redis-”开头的字符串,例如redis-pers,redis-test,redis-session等。

我不想grep字符串(例如redis-test),而是grep通配符后的字符串。 因此,如果sentinel.conf文件中的一行像tis sentinel known-slave redis-test 192.168.1.100 6379 ,我想返回192.168.1.100

1 个答案:

答案 0 :(得分:2)

Awk没有所需的glob(通配符)语法,但是您可以将模式转换为正则表达式,并使用~运算符进行匹配:< / p>

if ($i ~ /^redis-/)

正则表达式比shell全局函数更强大-任何全局模式都可以表示为regexp(反之亦然)。