请告知如何匹配以下hostname
机器hostname
应该符合以下规则
<a-z word ><number><a-z character/s>
真实的例子
star1a
linux25as
machine2b
linux5a
solaris300C
unix9c
请告知如何使用grep
加工这些hostname
我现在有这种语法
hostname | grep -c '[a-z][1-2][a-z]'
但这些语法不适用于我的所有示例
在solaris上选项egrep -E不起作用
hostname | grep -E '\b[a-z]+[0-9][a-z]+'
grep: illegal option -- E
Usage: grep -hblcnsviw pattern file . . .
Broken Pipe
尝试第二个选项(在solaris机器上):
hostname
swu2a
hostname | grep "^[a-z]\+[0-9][a-z]\+$"
不匹配!!!
我也试试这个:
hostname
swu2a
hostname | grep '[a-z]\+[0-9]\+[a-zA-Z]\+'
不匹配!!!
答案 0 :(得分:1)
您可以使用以下模式:
grep '^[a-z]\+[0-9]\+[a-zA-Z]\+$'
请注意,您可以使用grep
的返回值来确定模式是否匹配,您不需要使用-c
选项。像这样:
if [ hostname | grep '^[a-z]\+[0-9]\+[a-zA-Z]\+$' >/dev/null 2>&1 ] ; then
echo "host name OK"
fi
答案 1 :(得分:1)
以下awk
使用与此处发布的grep
相同的正则表达式使用。{/ p>
awk '/[a-z]+[0-9]+[a-zA-Z]+/'
star1a
linux25as
machine2b
linux5a
solaris300C
unix9c
如果您需要确保该行中没有其他内容,只需使用上述字词,请使用:
awk '/^[a-z]+[0-9]+[a-zA-Z]+$/'
^
标志着行首。
$
标志着行尾。