입력 데이터에 대해 수학 연산을 수행하고 인쇄하시겠습니까? [폐쇄]

입력 데이터에 대해 수학 연산을 수행하고 인쇄하시겠습니까? [폐쇄]

아래와 같이 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"

관련 정보