로그인한 사용자와 로그아웃한 사용자 표시 [닫기]

로그인한 사용자와 로그아웃한 사용자 표시 [닫기]

내 임무:

특정 시간 간격 후에 시스템 사용자에 대한 정보(들어온 사람과 나가는 사람)를 출력하는 프로그램을 작성하세요.

두 파일을 비교하여 다른 방법으로 이 작업을 시도했습니다. 내가 얼마나 잘했는지 모르겠어요. comm여기가 좋지 않다는 걸 알아요. 사용해 보았지만 diff콘솔에 대한 그녀의 출력을 이해할 수 없습니다. 시도할 때 diff -q이 줄만 표시됩니다.Files 1.txt and 2.txt differ

도와주세요.

#!/bin/bash
while (true) do
who > 1.txt
sleep 10s
who > 2.txt
(comm -13 1.txt 2.txt) > 3.txt
(comm -23 2.txt 1.txt) > 4.txt
echo IN :
cat 3.txt 
echo OUT :
sleep 10s
cat 4.txt 
echo [______________________________________________________________]
done

upd: 아니면 이런 것이 더 낫습니다..idk

#!/bin/bash
while (true) do
who > 1.txt
sleep 10s
who > 2.txt
(comm -13 1.txt 2.txt) > 3.txt
echo IN :
cat 3.txt 
echo OUT :
sleep 10s
who > 2.txt
(comm -23 3.txt 2.txt) > 4.txt
cat 4.txt 
echo [______________________________________________________________]
done

답변1

#!/bin/bash
who >1.txt
sleep 10
who >2.txt
awk 'NR==FNR{a[$1];next}!($1 in a){print $1}' 1.txt 2.txt >3.txt

awk 'BEGIN{print "Below are the New users logged in now "}{print $0}' 3.txt

echo "=========================="

awk 'NR ==FNR {a[$1];next}!($1 in a){print $1}' 2.txt 1.txt > 4.txt


awk 'BEGIN{print "Below are the user who logged out now"}{print $0}' 4.txt

관련 정보