4개의 열이 있는 공백으로 구분된 파일이 있습니다. awk를 사용하여 각 열의 최대값을 찾고 싶습니다. 내 awk 스크립트는 파일 끝에 이 정보를 출력해야 합니다.
예를 들어, 내 파일이 다음과 같다면:
Banana Oranges Lemons
Case_1 50 243 143
Case_2 45 443 103
Case_3 56 234 128
Case_4 64 164 183
Case_5 54 342 176
awk 스크립트를 실행한 후 다음과 같이 출력되어야 합니다.
Banana Oranges Lemons
Case_1 50 243 143
Case_2 45 443 103
Case_3 56 234 128
Case_4 64 164 183
Case_5 54 342 176
Banana maximum happens at case 4: The complete line is
Case_4 64 164 183
Orange maximum happens at case 2: The complete line is
Case_2 45 443 103
awk 코드 작성을 도와줄 수 있는 사람이 있나요?
답변1
BEGIN {
col[0]=""
max[0]=""
casenum=0
text[0]=""
}
{ print $0 }
NR == 1 { split($0,col,FS); }
/Case_/ && NR > 1 {
casenum++
split($0,vals,FS)
text[casenum]=$0
for(i=1;i<=length(col);i++)
{
if(vals[i+1] > max[i])
{
max[i]=vals[i+1]
item[i]=casenum
}
}
}
END {
for(i=1;i<=length(col);i++)
{
printf "\n%s maximum happens at case %d: The complete line is\n",col[i],item[i]
print text[item[i]]
}
}
그러면 다음과 같은 출력이 생성됩니다.
Banana Oranges Lemons
Case_1 50 243 143
Case_2 45 443 103
Case_3 56 234 128
Case_4 64 164 183
Case_5 54 342 176
Banana maximum happens at case 4: The complete line is
Case_4 64 164 183
Oranges maximum happens at case 2: The complete line is
Case_2 45 443 103
Lemons maximum happens at case 4: The complete line is
Case_4 64 164 183