Linux에서의 정렬 및 계산

Linux에서의 정렬 및 계산
reboot   system boot  3.10.0-327.el7.x Wed Oct 26 15:12 - 22:43  (07:30)    
root     :0           :0               Wed Oct  5 05:01 - 05:31  (00:29)    
(unknown :0           :0               Wed Oct  5 05:01 - 05:01  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Oct  4 23:01 - 05:31  (06:29)    
root     :0           :0               Wed Oct  5 04:56 - 04:58  (00:01)    
(unknown :0           :0               Wed Oct  5 04:56 - 04:56  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Oct  4 22:55 - 04:58  (06:02)  

Linux에서 각 사용자의 로그인 횟수를 계산하고 소요된 총 시간을 계산하는 명령을 작성하는 방법을 알려줄 수 있는 사람이 있습니까? 이 콘텐츠를 표시하는 화면에 투영하세요.

User root logged in a total of ?? times with a total of mins/hours logged
User unknown logged in a total of ?? times with a total of mins/hours logged.

답변1

reboot   system boot  3.10.0-327.el7.x Wed Oct 26 15:12 - 22:43  (07:30)    
root     :0           :0               Wed Oct  5 05:01 - 05:31  (00:29)    
(unknown :0           :0               Wed Oct  5 05:01 - 05:01  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Oct  4 23:01 - 05:31  (06:29)    
root     :0           :0               Wed Oct  5 04:56 - 04:58  (00:01)    
(unknown :0           :0               Wed Oct  5 04:56 - 04:56  (00:00)    
reboot   system boot  3.10.0-327.el7.x Tue Oct  4 22:55 - 04:58  (06:02) 

위의 세부 사항을 고려하면 파일에 있습니다.

for i in `awk '{print $1}' test_login |sort|uniq`;
 do
         count=`grep -c $i test_login`
        sum=0;
        for j in `grep $i test_login|awk '{print $NF}'|cut -c 2-6`;
         do
                 var=`echo $j | awk -F: '{print ($1 * 60) + $2}'`;
                 sum=$((sum+var));
        done
        ((hour=$sum/60))
        ((min=$sum-$hour*60))
        echo "User $i logged in a total of $count times with a total of $hour:$min logged"
  done

test_login: 모든 사용자 로그가 포함된 파일입니다.

관련 정보