在awk脚本中获取用户输入并在文件中更新它

时间:2017-10-25 15:54:16

标签: linux bash shell awk

我有一个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文件。

2 个答案:

答案 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}}
相关问题