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