![AWK에서 행을 삭제하시겠습니까?](https://linux55.com/image/55262/AWK%EC%97%90%EC%84%9C%20%ED%96%89%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
내 가동 시간입니다
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 days
8 mins
$ uptime | sed 's/^.*up \([^,]*\).*$/\1/'
19 mins
sed 스크립트는 전체 입력 줄을 첫 번째 쉼표 s/^.*up \([^,]*\).*$/\1/
사이의 문자열로 바꿉니다 .up␣