我得到的文件名txtGrade.txt
包含以下内容:
Name Score
Nicki Minaj 60
我想通过shell脚本读取和计算文件中的每个人,并回答以下等级:
Name Score Grade
Nicki Minaj 60 C
条件为A>=80 , 79>=B>=70 ,69>=C>=60 , 59>=D>=50 , 49>=F
感谢您对我的帮助 欣赏。
答案 0 :(得分:0)
您需要的命令:
tail -n +2
将文件的第二行向前打印。case
statement 或 arithmetic expressions检查分数对应的等级。循环读取带有名称和分数的行:
while read -r first_name last_name score
do
[here $first_name etc. can be used]
done
case
statement来检查分数对应的等级。printf '%s %s\n' 'some text' "$some_variable"
打印“一些文本”,后跟一个空格,然后是$some_variable
的值,然后是换行符。您还需要一些有关quoting/word splitting的知识。
答案 1 :(得分:0)
您可以使用Sed命令来修改文件。 下面是用成绩修改文件的代码,我假设每一列都由两个选项卡分隔。
sed -i -e "1d" txtGrade.txt
file="ba.txt"
while IFS= read -r line
do
a=$(echo $line | awk '{print $2}')
if [ $a -ge "80" ]
then
sed -i -e "s/${line}/${line}\\t\\tA/g" txtGrade.txt
elif [ $a -ge "70" ] && [ $a -le "79" ]
then
sed -i -e "s/${line}/${line}\\t\\tB/g" txtGrade.txt
elif [ $a -ge "60" ] && [ $a -le "69" ]
then
sed -i -e "s/${line}/${line}\\t\\tC/g" txtGrade.txt
elif [ $a -ge "50" ] && [ $a -le "59" ]
then
sed -i -e "s/${line}/${line}\\t\\tD/g" txtGrade.txt
elif [ $a -ge "49" ]
then
sed -i -e "s/${line}/${line}\\t\\tF/g" txtGrade.txt
else
echo "Results are not correct"
exit 1
fi
done <"$file"
sed -i "1 i\Name\t\tScore\t\tGrade" txtGrade.txt
如果您喜欢我的回答,请投票, 谢谢