从一行中获取一个特定的数字并将其附加

时间:2019-02-01 16:11:34

标签: bash shell scripting

我正在尝试过滤文件的特定行,仅从文件中获取数字

我的文件位于/ home / evaluation / studentName 中,并且包含以下内容:

  • 英语18
  • 历史18
  • 数学18
  • 总数:90/100

但也可以包含以下内容:

  • 英语14
  • 历史14
  • 总数:70/100

所以每个学生都有自己的分数。


我只想过滤总数数字。 因此它将显示: 90 70

然后只需在学生档案中附加该数字即可。


到目前为止,我去过这个

for file in /home/evaluation/* ; do
    awk -v tot="$tot" '{sum+=$2} END {print "Total", (sum/(tot*20))*100"/100"}' "$file" >> "$file"
result=$(grep "Total" "$file" | cut d' ' -f2)
echo "$result" >> $file
done

但是不幸的是,它并不起作用。

2 个答案:

答案 0 :(得分:2)

那下面的东西呢?

for file in /home/evaluation/*  
 do 
  result=$(cat $file | grep Total | cut -d':' -f2 | cut -d'/' -f1) 
  echo "$result" >> $file
 done

答案 1 :(得分:1)

一行s解决方案:

所有工作都有一个简单的命令

假设sed已经是最后一行:

Total

如果Total不是最后一行,事情就会变得更加复杂:

sed 's/Total \([0-9]\+\)\/[0-9]\+ *$/&\n\1/' -i /home/evaluation/*