2012-08-31 3 views
0

그래서 나는 비디오 카드의 수를 찾는 방법을 알고 있지만 루비 스크립트에서 내가 그것을 결정하는 것은이 작은 작은 방법했다 썼다 :찾기 번호

def getNumCards 
    _numGpu = %x{lspci | grep VGA}.split("\n").size 
end 

을하지만,

def getNumCards 
    _numGpu = %x{lspci | grep "VGA\|3D"}.split("\n").size 
end 

하지만 내가 두 번째를 실행할 때 0 반환 찾는 오전 : 결정했다 나뿐만 아니라 내가 그것을 변경 VGA로 3D에 대한 검색을 할 필요가있다. 명령 줄에서 명령을 실행하면 3 개의 비디오 카드 (VGA 카드 1 개와 3D 카드로 제공되는 Tesla NVIDIA 카드 2 개)가 나에게 표시됩니다. 분할 된 부분에서 어떤 일이 일어나고 있는지 잘 모르겠습니다.

도움이 될 것입니다!

건배

답변

3

남자 GREP은 :

-E, --extended-regexp 
... 
egrep is the same as grep -E. 

그래서, egrep은 도움이

0

내가 한 두 가지 방법이 정보 후에 갈 것.

거의-순수 명령 줄 버전은 다음과 같습니다 OS를 할 수 있습니다

def getNumCards 
    `lspci | grep -P '\b(?:VGA|3D)\b' | wc -l`.to_i 
end 

를 정수로 최종 변환을 제외하고 거의 모든 작업을 수행합니다.

-P '\b(?:VGA|3D)\b'은 "단어 분리를 찾은 다음 VGA 또는 3D를 찾고 다른 단어 분리"를 표시하는 Perl 정규 표현식입니다. 그러면 다른 문자열에 포함 된 대상으로 인한 조회수를 피할 수 있습니다.

더 많은-루비 버전은 다음과 같습니다

def getNumCards 
    `lspci`.split("\n").grep(/\b(?:VGA|3D)\b/).count 
end 

그것은 같은 일을 오직 모든 루비.