2017-05-22 2 views
0

은 시저의 MEM 정보에서 유닉스 시스템에서 전체 메모리 정보를 얻기 위해 필요한 행의 번호를, 라인에서 트림하는 cat /proc/meminfo | grep "MemTotal" 을하지만이정규 표현식은

MemTotal:  1024984 kB 

난에 더욱 그 라인을 정돈해야합니다 : 라인 전체를 반환

1024984 kB

는 지금까지 전체 령 어입니다

D 내가 사용하고 있지만, 두 번째 부분은 작동하지 않습니다

cat /proc/meminfo | grep "MemTotal" | grep -E -o "([0-9])"

내가 두 번째 GREP은 적어도 숫자 부분을 반환 것이라고 생각하지만 그것 전혀 아무것도 반환하지 않습니다.

누구든지 해결할 수 있습니까? 감사합니다. .

+0

'(\ d +) +. *'이 도구를 사용해 볼 수도 있지만 정규 표현식을 테스트하는 데 유용한 도구입니다 [link] (https://regex101.com/) –

+0

'grep -Eo '숫자 부분을 가져 오기 위해 [0-9] +'' –

답변

4

awk

는 PCRE 가능한 사용 가변 길이 lookbehind 경우, grep로 2 층과 3 열

$ grep 'MemTotal' /proc/meminfo 
MemTotal:  1024984 kB 
$ awk '/MemTotal/{print $2,$3}' /proc/meminfo 
1024984 kB 


을 인쇄, 더 나은 MemTotal 일치하는 모든 라인을 위해, 여기에 적합합니다

$ grep -oP 'MemTotal:\h+\K.*' /proc/meminfo 
1024984 kB 
0

이상한, 나를 위해, 그것은 [0-9] 숫자를 일치하기 때문에입니다

8 
0 
8 
4 
9 
0 
4 

를 반환합니다. 과 일치하도록 하나 이상의을 입력하려면 +이 필요합니다. 당신은 또한 괄호를 버릴 수 있습니다, 그들은 여기서 아무런 도움이되지 않습니다.

:
grep MemTotal /proc/meminfo | grep -E -o '[0-9]+'