uptime 명령의 출력 변경으로 인해 n번째 열 데이터를 가져올 수 없습니다.

uptime 명령의 출력 변경으로 인해 n번째 열 데이터를 가져올 수 없습니다.

다음은 마지막에서 세 번째 열을 추출한 Solaris 가동 시간 출력입니다.

uptime
8:30pm  up 23 day(s), 17:46,  5 users,  load average: **2.79**, 1.79, 1.53

위에서는 항상 마지막 열에서 세 번째 열을 굵게 강조 표시해야 합니다. 즉,2.79

echo '8:30pm  up 23 day(s), 17:46,  5 users,  load average: 2.79, 1.79, 1.53' | awk '{ print substr($10, 1, length($10)-1) }'

Output:
2.79

그러나 때때로 가동 시간 출력이 다음과 같이 표시되지 18 hr(s)않으면 17:46실패합니다 .

echo '8:44pm  up 23 day(s), 18 hr(s),  5 users,  load average: 1.08, 1.12, 1.22' | awk '{ print substr($10, 1, length($10)-1) }'

Output:
average

간단한 해결책은 마지막 열에서 3을 뺀 값(마지막 열에서 세 번째 열)을 검색하는 것입니다. 마지막 세 열은 항상 숫자이고 변경되지 않기 때문입니다. 그러나 이 작업을 수행하는 방법을 잘 모르겠습니다.

뭔가 제안해주실 수 있나요?

答え1

man cut다음을 읽고 수행하십시오.

uptime  | cut -d, -f4 | cut -d: -f2

答え2

이것을 시도해 볼 수 있습니다.

awk -F ':' '{ print 0+substr($NF, 1, -1+index($NF,","))}'

答え3

항상 마지막에서 세 번째 열을 얻으려면 처음부터 앞으로 계산하는 것이 아니라 행 끝에서 뒤로 계산하면 됩니다.

awk '{print $(NF-2)+0}'

예를 들어:

$ echo '8:30pm  up 23 day(s), 17:46,  5 users,  load average: 2.79, 1.79, 1.53' | awk '{print $(NF-2)+0}'
2.79

$ echo '8:44pm  up 23 day(s), 18 hr(s),  5 users,  load average: 1.08, 1.12, 1.22' | awk '{print $(NF-2)+0}'
1.08

関連情報