0

重複の可能性:
このスクリプトは年齢別に正しく並べ替えられません

このスクリプトを取得して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;
4

2 に答える 2

1

この行を追加します

sort -o $INPUT -n -t , -k4.7,4 -k4.4,4.5 -k4.1,4.2 $INPUT

INPUT=./Birthdays.csv
于 2013-01-18T18:22:43.270 に答える
0

試してみてください-###猫Birthdays.csv| sort --field-separator ='/' --key = 3,5

于 2013-01-18T17:42:02.760 に答える