AWK에서 행을 삭제하시겠습니까?

AWK에서 행을 삭제하시겠습니까?

내 가동 시간입니다

uptime=`uptime|grep days|awk '{print$3,$4}'`

하지만 이제는 다음과 같이 표시됩니다.23 days,

,마지막 것을 삭제하고 싶어요 .

어떻게 해야 하나요?

답변1

노력하다:

uptime | awk -F'[, ]' '{print $3,$4}'

답변2

노력하다

uptime | awk '/days/ { printf "%s%s",$3,substr($4,1,length($4)-1) ; }' 

샘플 테스트, 우분투 14.04.1,

mybox $  uptime
 14:36:13 up 2 days, 23:41,  2 users,  load average: 0,17, 0,18, 0,14
mybox $  x=$(uptime | awk '/days/ { printf "%s%s",$3,substr($4,1,length($4)-1) ; }' )
mybox $  echo $x
2days
mybox $  

답변3

다음과 같이 가동 시간 의사 파일을 직접 구문 분석하는 것이 좋습니다.

uptime="$(( `cat /proc/uptime  | cut -f1 -d.` / 86400 )) days"

가동 시간이 1일 미만인 경우 아무 것도 아닌 대신 "0일"이 표시됩니다.

답변4

grep명령 은 uptime한 줄만 표시하므로 필요하지 않습니다 .

$ uptime
 1:15PM  up 2 days, 14:04, 1 user, load averages: 1.12, 1.12, 1.08

또는

$ uptime
 1:24PM  up 8 mins, 1 user, load averages: 1.27, 1.17, 0.62  

첫 번째 쉼표( 또는 위의 두 예에서는 각각) up사이의 비트를 추출한다고 가정해 보겠습니다 .2 days8 mins

$ uptime | sed 's/^.*up \([^,]*\).*$/\1/'
19 mins

sed 스크립트는 전체 입력 줄을 첫 번째 쉼표 s/^.*up \([^,]*\).*$/\1/사이의 문자열로 바꿉니다 .up␣

관련 정보