AWK 구문을 이해하기 어려움
Oct 20 2020
그래서 나는 AWK를 완전히 처음 접했고 어떻게 사용하는지 모르겠지만 GNU awk 사용자 가이드의 코드 샘플을 작업하려고합니다.
{
for (i = 1; i <= NF; i++)
freq[$i]++
}
END {
for (word in freq)
printf "%s\t%d\n", word, freq[word]
}
이 코드 조각은 in freq에있는 모든 단어의 개수를 간단히 인쇄합니다.
{
data[++data_index] = $0
}
END {
produce_numbers(data)
for(i in freq)
printf("%s\t%d", i, freq[i])
}
function produce_numbers(sortedarray)
{
n = asort(sortedarray)
sum = 0
for(i = 1; i <= n; i++)
{
freq[$i]++
}
return
}
이것은 내가 사용하려는 것입니다. 나는 그것이 몇 가지 실수를 가지고 있다고 확신하지만 (분명히 내가 가진 출력이 잘못되었거나 존재하지 않기 때문에) 구문을 알만큼 경험이 부족합니다. 또한 전달하려는 파일은 다음과 같습니다.
A
B
A
C
B
A
C
D
답변
JamesBrown Oct 21 2020 at 03:57
나는 다음을 재구성하고 수정했습니다.
function produce_numbers(sortedarray)
{
n = asort(sortedarray)
# sum = 0 # not used
for(i = 1; i <= n; i++)
{
freq[sortedarray[i]]++ # $i is unusable at this point } return } { data[++data_index] = $0
}
END {
produce_numbers(data)
for(i in freq)
printf("%s\t%d\n", i, freq[i]) # added newline to output
}
산출:
A 3
B 2
C 2
D 1