유닉스 unix awk gawk 와 모든 유틸리티를 사용하여 하는건데요
글쓴이: o_ohamajy / 작성시간: 월, 2013/05/27 - 1:26오후
last 명령을 치면
ah6113
ah6113
kgu
bluemarin43
이런식으로 아이디와 접속시간이 나오잖아요
총 중복된건 uniq를 사용해서 지우고 하면서
ah6113 2
kgu 1
bluemarin43 이런식으로 중복된건 다 지우고 총 로그인 횟수와
총시간을 합해서 출력하는건데 sed도 상관없고
스크립트로 변수 선언해서 해야하는건데 도전희 모르겠네요 ㅠ
왠만하면 혼자 해보려고 주말내내 해봤는데 도저희 모르겠네여 ㅠ
스크립트 작성도 c언어랑은 달라서 모르겠고 ㅠ 제발 도와주세요
여러분! ㅠㅠ
Forums:
{count[$1++] if(count[$1]==$1
{count[$1++]
if(count[$1]==$1)
for(i=0; i num++
}
스크립트 이런식으로 작성 해서 같은 아이디 저장하고 로그인 횟수 증가시키는거같은데 ㅠ
gawk -f scrip zz (zz는 last >> zz 저장시켜논거입니다 ㅠ)
도와주세여 ㅜㅜ
음 ..
검증은 안 해봤음. 대충 아이디어만 보세욤.
현재 로그인 되어 있는 계정에 대해서는 무시함 (계산에 포함 안 됨).
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다 ㅜㅜㅜ
그런데 전 배우는 학생이다 보니. 그대로 써도. 접근 제한이 나와서 못쓰네여 ㅠ 로그인 시간과. 초,분,시간, 나오게
파이프사용하여 명령이나. gawk -f 스크립트를 사용하여서는 할수없을까여 ㅜㅜ? last >> datafile 이런식으로 cat으로 저장해서 해도 되는데 ㅠ
아니면. 그냥 last | 명령후에 바로 파이프로 해도 되구여 ㅜ
음 ..
접근 제한..????
뭐에 대한 접근 제한이란 말인지 모르겠군요.
/var/log/wtmp 는 일반적으로 other 에게도 read 를 허용합니다.
last 명령으로 결과를 볼 수 있다면, 스크립트 실행에 문제는 없습니다.
만약 스크립트를 실행했는데 permission denied 가 떴다면, 스크립트에 실행 권한이 없어서일테니..
chmod 명령으로 스크립트에 실행 권한을 주세요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
저도 한번 간단하게 해봤습니다.
총 시간은 분 단위로만 표시하도록 했으니까 참고하세요.
한번 해볼게요! 감사합니다 ㅜㅜ
정말 유닉스 막막한데 도와주셔서 감사합니다 ㅜㅜ 음 ㅠ 근데 마지막에 나오는건 분? 인가요 ㅠ? 아직 초보다 보니 해석이 잘 안되네요 ㅠ
C언어와 달라서 헷갈린다고 하셨는데 차이점을 좀
C언어와 달라서 헷갈린다고 하셨는데 차이점을 좀 얘기해 드릴게요.
awk에서는 숫자, 문자열 차이를 엄격하게 구분하지 않습니다.
그래서인지 array 안에 들어가는 index의 경우도, 정수 뿐만 아니라 문자까지 허용합니다.
즉, array가 (이름과는 달리) hashtable 로 구현된다고 보시는 게 좋습니다.
그렇기 때문에 아래와 같은 것도 가능합니다.
userlogins의 색인으로 username을 정하고,
같은 username이 나타날 때마다 1씩 증가시켜 줍니다.
제가 우분투에서 last를 돌려보니 10번째 행에서 (d+hh:mm) 같은 형식이 나오더군요.
substring으로 $10을 쪼개서 괄호문자를 없애고, days 를 추출.
다시 split으로 시,분을 추출.
그런 다음 time으로 합산했습니다.
이제 userlogtimes 안에 있는 값과 합산해서 저장합니다.
마지막으로, END부분에서 for (i in userlogins) 를 돌리면,
아까 색인을 username으로 정했으므로 i값이 곧 아이디가 됩니다.
즐 코딩하세요.
아. 덕분에 이해가 좀 됬네요.ㅎㅎ
아. 배열에 문자열이 들어가길래 당황도 하고 그랬네여 ㅎㅎ 혹시 ㅠ
사용자 별로 작업시간이 제일 작았던 경우와 제일 길었던 경우와. 사용자의 요일별로 작업시간을 계산하여
출력 하려고 하는데 어떻게 해야하나요 ㅠ 필드 구분자로도 해보려고 하는데 ㅠ 안되네요 ㅠ
스페이스바 칸위치도 다르고 ㅠ ( 필드 지정도 안되고 ㅠ 스크립트로 하려고 하는데도 정말 힘드네요 ㅠㅠ
힌트만 드리겠습니다.
힌트만 드릴게요. 제가 숙제를 대신해드릴 수는 없는지라;;;
awk의 기본 개념을 처음부터 들여다보시면 별로 어렵지 않을 거에요.
http://www.grymoire.com/Unix/Awk.html#uh-23
나머지 숙제는 알아서 ^^
PS. 영문으로는 공부할 만한 자료가 풍부하고 무궁무진합니다.
구글에서 awk tutorial 검색해 보세요.
저도 위 문서를 처음부터 끝까지 읽고 30줄 코딩한 겁니다.
1학년 유닉스를 전문적으로 배운게 아니라서요 ㅠ
영어 실력도 안될뿐만 아니라... 교수님께서도 그렇게
자세한건 안배웠거든요 ㅠ 그냥 split? 이건 분할 할떄 쓴다.
이정도만 배운지라.
{count[$1]++
time=0;
if(count[$1]==1){
name[i++]=$1;
time=time+$2
}
}
END{for(j=0; j
이렇게 까지는 했거든요.. 사용자 아이디와 로그인 횟수는
대충 만들어서 저장을 하였는데.. 필드 구분자 -F로 쪼개야 되는데 괄호(도 들어가구 스페이스 : 도 들어가더라구요 ㅠ
어떻게 해야할지 모르겠어요 ㅠ
도서관에서.
유닉스 책과 리눅스 책을 찾아서 검색해봤는데
리눅스에선 러닝 리눅스에서만 몇줄 나오는데
내용이 다르ㅜ ㅠ 뭔지도모르겠구요 ㅠ솔루션도 따로 없어서 ㅠ
정말 막막하네요 ㅠㅠ 도와주세요 ㅠㅠ 원래 머리가 안되서.
c 코드 같은것도 외워버리는 타입이라 ㅠ 거의 이문제만
70시간째 보고 있는거같네요.. -F'[: \(\)] 이런것도 해보는데
다안되네요 ㅠ
구글링 해 보세요.
구글링을 통한 튜토리얼들 베껴서라도 해 보세요.
자꾸 해 봐야 실력이 늡니다.
댓글 달기