シェル操作課題やってみた.
log.txt
server1,1343363124,30,/video.php server2,1343363110,20,/profile.php server3,1343363115,7,/login.php server1,1343363105,8,/profile.php server2,1343363205,35,/profile.php server2,1343363110,20,/profile.php server3,1343363205,30,/login.php server4,1343363225,12,/video.php server1,1343363265,7,/video.php
問1 このファイルを表示しろ
cat log.txt server1,1343363124,30,/video.php server2,1343363110,20,/profile.php server3,1343363115,7,/login.php server1,1343363105,8,/profile.php server2,1343363205,35,/profile.php server2,1343363110,20,/profile.php server3,1343363205,30,/login.php server4,1343363225,12,/video.php server1,1343363265,7,/video.php
問2 このファイルからサーバー名とアクセス先だけ表示しろ
cut -d ',' -f 1,4 log.txt server1,/video.php server2,/profile.php server3,/login.php server1,/profile.php server2,/profile.php server2,/profile.php server3,/login.php server4,/video.php server1,/video.php
問3 このファイルからserver4の行だけ表示しろ
grep '^server4' log.txt server4,1343363225,12,/video.php
問4 このファイルの行数を表示しろ
wc -l log.txt 9 log.txt
問5 このファイルをサーバー名、ユーザーIDの昇順で5行だけ表示しろ
sort -t ',' -k 1,1 -k 3,3g log.txt | head -n 5 server1,1343363265,7,/video.php server1,1343363105,8,/profile.php server1,1343363124,30,/video.php server2,1343363110,20,/profile.php server2,1343363110,20,/profile.php
問6 このファイルには重複行がある。重複行はまとめて数え行数を表示しろ
sort -u log.txt | wc -l 8
問7 このログのUU(ユニークユーザー)数を表示しろ
cut -d ',' -f 3 log.txt | sort -u | wc -l 6
問8 このログのアクセス先ごとにアクセス数を数え上位1つを表示しろ
cut -d ',' -f 4 log.txt | sort | uniq -c | sort -r | head -n 1 4 /profile.php
問9 このログのserverという文字列をxxxという文字列に変え、サーバー毎のアクセス数を表示しろ
cat log.txt | sed -e 's/server/xxx/' | cut -d ',' -f 1 | sort | uniq -c 3 xxx1 3 xxx2 2 xxx3 1 xxx4
問10 このログのユーザーIDが10以上の人のユニークなユーザーIDをユーザーIDでソートして表示しろ
give up
解答と比べてみたけど,まだまだスキルが足りないな…
あとawkもきちんと使えるようになって問10みたいなのにも対応できるようになりたい.