다음은 마지막에서 세 번째 열을 추출한 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