如何匹配主机名机器

时间:2014-11-03 09:53:03

标签: linux grep solaris

请告知如何匹配以下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]\+'

不匹配!!!

2 个答案:

答案 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]+$/'

^标志着行首。
$标志着行尾。