Thứ Hai, 25 tháng 2, 2013

[Shell] Hiến Máu nhân đạo



5. Cho cấu trúc file thông tin sinh viên hiến bao gồm 4 cột: MSSV, Tên sinh viên, ngày hiến máu, số máu được hiến, loại máu. Các cột cách nhau bằng dấu ":". Lưu ý một sv có thể hiến  máu nhiều lần.

   a. Tìm tổng số máu sinh viên đã hiến.

   b. In tổng số máu theo loại. Lưu ý: ch ỉ có các loại máy O, AB, A, B

   c. In số máu mỗi sinh viên đã hiến theo cấu trúc sau: Ten sinh vien - MSSV đã hiến số máu

      Ví du: Sinh viên Nguyễn Văn An 09123VT đã hiến 400 ml máu

   d. Tìm sinh viên đã hiến nhiều máu nhất.


#!/bin/bash
echo -n "--------Tong so mau sinh vien da hien: "
cat sv | awk -F':' '{tong+=$4} END {print tong}'
echo  "-------Tong so mau theo loai: "
awk -F':' '{print $5}' sv | sort | uniq -c >dem
awk '{print "Nhom mau " $2 " co tong cong "$1}' dem
awk -F':' '{print $2 " " $1 " " $4}' sv | sort > somau
list=$(cat somau | awk '{print $2}' | sort | uniq)
for i in $list
do
x=$(cat somau | grep $i | awk '{print $1 }' | uniq) 
y=$(cat somau | grep $i | awk '{sum+=$3} END {print sum}')
echo Sinh vien $x "-" $i "da hien $y ml"
done>ds
echo -------So mau moi sv da hien:
cat ds
echo -------Sinh vien hien mau nhieu nhat: 
h=$(cat ds | sed 's/^.*da hien //g' | sort -nr | sed -n '1p' | awk '{print $1}')
awk '$8 >= '$h' {print $0}' ds

Không có nhận xét nào:

Đăng nhận xét