入力データに対して数学演算を実行して印刷しますか? [閉鎖]

入力データに対して数学演算を実行して印刷しますか? [閉鎖]

以下のように、bashスクリプトを使用して行と列ごとにデータを印刷しようとしています。

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "$line"
done < "$1" 
{ 
   awk 'BEGIN { print "Points"}
      /Points/ { id = $1; }'
} 

私のtxtファイルは次のとおりです。

Team    Played  Wins    Tied
england     4       3       2
america     9       5       3

端末の出力は次のようになります。

Team    Played  Wins    Tied  Points
england    4        3       2     16
america     9       5       3     26

計算は次のとおりです。チームが1勝を収めれば勝点4点、引き分けは勝点2点を獲得します。ところで、数学をどうするのか分からないのでできません。

答え1

これにはシェルループはまったく必要ありません。

awk '{$(NF+1) = NR==1 ? "Points" : $3*4 + $4*2; print}' OFS='\t' input.txt
Team    Played  Wins    Tied    Points
A       2       1       1       6
B       2       0       1       2

答え2

通常のbashでは、次のように書いています。

while read -ra fields; do 
    if [[ ${fields[0]} == "Team" ]]; then 
        fields+=("Points")
    else 
        fields+=( $(( 4 * ${fields[2]} + 2 * ${fields[3]} )) )
    fi
    # changes to IFS variable done inside a subshell
    (IFS=$'\t'; echo "${fields[*]}")
done < "$1"

関連情報