我有一个students.txt(RollNo,Name,IDU,CGPA),如果存在滚动号,则提示用户更改IDU和CGPA并在名为“Student.txt”的文件中更新相同内容
我制作了以下剧本:
#! /bin/bash
dispaly(){
awk -F ":" -v roll=$1 '{ if ( $1 == roll) {name = $2; print name; } }
END {if (name == "") print "not found" }' students.txt
}
echo "Enter the roll no."
read rno
if [ $rno -ge 1000 ] && [ $rno -le 9999 ]
then
dispaly $rno
# Now I have a valid $rno and want to update that line
else
echo Enter no between 1000 and 9999
fi
现在我需要帮助获取IDU和CGPA值的用户输入,并根据找到的记录更新带有该值的students.text文件。
答案 0 :(得分:0)
一般来说" - "用于awk的标准输入,例如
awk '{print($1)}' -
我不清楚你到底想要什么。你不能使用额外的'阅读'脚本的bash部分中的语句用于输入其他2个值?
答案 1 :(得分:0)
首先,我要滚动
awk -F : -v rno=$rno -v idu=$idu -v cgpa=$cgpa ' $1==rno { $3=idu;$4=cgpa} OFS=":" ' students.txt > tmp.txt && mv tmp.txt students.txt
如果找到则使用awk替换记录
{{1}}