重複の可能性:
このスクリプトは年齢別に正しく並べ替えられません
このスクリプトを取得してBirthdays.csvの情報を生年月日で並べ替える方法がまったくわかりません。sort -nコマンドを知っていますが、birthdays.csvファイルをDOBで並べ替えたいと思います。どうすればこれを行うことができますか?
次のスクリプトは、ユーザー情報と生年月日を取得し、これらの情報を「birthday.csv」というファイルに配置します。
次に、「birthdays.csv」を生年月日で並べ替えてから、この新しく並べ替えられた情報を表示する必要があります。また、今日の日付までに各人の年齢を計算します。私が抱えている問題は、birthdays.csvの情報を生年月日で並べ替えることです。誰かが私にこの種の方法を教えてもらえますか?
スクリプトは次のとおりです。
a=0
while [ $a -lt 2 ];
do
echo Please enter a first name
read firstName
echo Please enter last name
read lastName
echo Please enter phone number
read phoneNumber
echo Please enter date of birth - format dd/mm/yyyy
read dob
echo "$firstName,$lastName,$phoneNumber,$dob" >> Birthdays.csv
echo If you would like to add another person press 1 or enter 2 to proceed
read a
done
INPUT=./Birthdays.csv
OLDIFS=$IFS
IFS=","
[ -f ${INPUT} ] && while read Name Surname Telephone DOB
do
birthMonth=${DOB:0:2}
birthDay=${DOB:3:2}
birthYear=${DOB:6:4}
currentDate=`date +%d/%m/%Y`
currentMonth=${currentDate:0:2}
currentDay=${currentDate:3:2}
currentYear=${currentDate:6:4}
if [[ "$currentMonth" -lt "$birthMonth" ]] || [[ "$currentMonth" -eq "$birthMonth" && "$currentDay" -lt "$$birthDay" ]]
then
let Age=currentYear-birthYear-1
else
let Age=currentYear-birthYear
fi
echo "Name : $Name"
echo "Surname : $Surname"
echo "Telephone : $Telephone"
echo "DOB : $DOB"
echo "Age : $Age"
echo "##########################################"
done < $INPUT
IFS=$OLDIFS
echo $DATE
exit 0;