/proc/net/dev
공백으로 구분된 두 번째 열과 10번째 열의 콘텐츠를 추출 해야 합니다 . 즉, 수신 및 전송된 바이트 수입니다.
grep
역참조를 사용하여 이를 수행할 수 있습니까 ?
답변1
귀하의 질문에 대답하십시오 :
awk '{print $2,$10}' /proc/net/dev
생산하다
Receive
|bytes packets
6385384218 42314607745
12034420041 12034420041
이것은 당신이 원하는 것이 아닐 수도 있습니다.
당신은 그것을 사용할 수 있습니다
awk '$1 ~ /:/ {print $2,$10}' dev
6385389751 42314610935
12034420241 12034420241
어디
$1 ~ /:/
첫 번째 필드가 foo인 행을 선택합니다.{print $2,$10}
두 번째 및 열 번째 필드 인쇄
grep
- grep을 사용하면 정규 표현식과 일치하여 숫자를 선택할 수 있습니다.
/proc/dev/net
- 그러나 정규식은 설명은 하지만 실행할 수는 없습니다.
즉, 다음에 적용된 정규식이 표시되지 않습니다.단일 grep 명령그러면 전송됩니다
eth0: 6385654376 26986310 0 107680 0 0 0 4665 42314947519 21475282 0 0 0 0 0 0
lo: 12034424441 4553238 0 0 0 0 0 0 12034424441 4553238 0 0 0 0 0 0
(부정확한 숫자)
6385389751 42314610935
12034420241 12034420241
사용grep FOO
여기에는 FOO
grep의 옵션과 매개변수만 포함되어 있습니다.
@Emeric의 시도에서 내 OS에서 실행하면 두 개의 열이 있을 수 있습니다.
6385672702
42314983073
12034425441
12034425441
그러나 행운을 시험해 볼 수 있습니다.https://codegolf.stackexchange.com/
답변2
그게 전부라면 grep
다음을 시도해 보세요.
grep -Eo '[^ ]+:( *[0-9]*){9}' /proc/net/dev | grep -Eo '(: *[0-9]*|[0-9]*$)' | grep -o '[0-9]*'
137517672
9029195
- 첫 번째 표현식은 인터페이스 이름 + 콜론을 인쇄한 다음 다음 9개의 숫자 세트를 인쇄합니다.
- 두 번째 표현식은 콜론으로 시작하거나 줄 끝(첫 번째 및 마지막으로 선택한 열)으로 끝나는 숫자 그룹만 추출합니다. 여기서 행은 일치하는 각 열에 대해 하나의 행으로 분할됩니다.
- 마지막 표현식에는 선행 콜론이 제거되었습니다(여기에는 정치적인 내용이 없습니다.).
앞서 지적했듯이 grep
이는 이 목표를 달성하는 최선의 방법과는 거리가 멀습니다.