2014-11-03 2 views
-1

다음 규칙호스트 머신과 일치하는 방법을

<a-z word ><number><a-z character/s> 

실제 예에 hostname가 따라해야 다음 hostname

기계와 일치하는 방법을 조언하십시오

star1a 
linux25as 
machine2b 
linux5a 
solaris300C 
unix9c 

조언하십시오 방법 컴퓨터에 이 hostname (grep 포함)

나는 -E하지에 (두 번째 옵션을 시도

hostname | grep -E '\b[a-z]+[0-9][a-z]+' 
grep: illegal option -- E 
Usage: grep -hblcnsviw pattern file . . . 
Broken Pipe 

작동 egrep을 옵션 솔라리스에

hostname | grep -c '[a-z][1-2][a-z]' 

하지만 이러한 구문 내 모든 예

를 작동하지 지금이 구문이 솔라리스 기계) :

hostname 
swu2a 
hostname | grep "^[a-z]\+[0-9][a-z]\+$" 

일치하지 않음 !!!

나는 또한이 시도 :

hostname 
swu2a 
hostname | grep '[a-z]\+[0-9]\+[a-zA-Z]\+' 

을 일치하지 않습니다!

+0

또한 일치하지 않아야하는 행을 표시하고 전체 행 또는 일부만 일치해야하는지 여부를 나타냅니다. – fedorqui

+0

내 질문에 예제를 참조하십시오 – maihabunash

+0

당신이 무엇을 요구하는지 명확하지 않습니다. 또한, 주요 공백이 실제로 거기에 있어야하는지 또는 질문을 작성할 때 오타가 있는지를 나타내십시오. – fedorqui

답변

1

grep가 여기에 게시 사용하기 때문에 같은 정규 표현식을 사용하여 awk입니다.

awk '/[a-z]+[0-9]+[a-zA-Z]+/' 
star1a 
linux25as 
machine2b 
linux5a 
solaris300C 
unix9c 

당신이 있는지 확인해야하는 경우 단어 만 위의 라인에서 아무것도, 사용이 없습니다 :

awk '/^[a-z]+[0-9]+[a-zA-Z]+$/' 

^ 표시 줄의 시작은.
$ 표시가 끝납니다.

+0

솔라리스에서 작업을 지금 +1하십시오 – maihabunash

+0

왜 일반 grep 작업에 awk를 사용합니까? – hek2mgl

+0

@ hek2mgl 그건 내가 대답하기위한 것이 아닙니다. OP가'grep '에 문제가 있었기 때문에 방금 추가했습니다. – Jotne

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