Para esclarecer o que os comentadores observaram no código:
BEGIN {
FS="\t"
HPD=0
HPDname=""
LPD=0
LPDname=""
HPW=0
HPWname=""
LPW=0
LPWname=""
}
# Stuff in here needs to be printed during the process.
{
print $1
PD=$2/$4
print PD
PW=($3/($3+$4))*100
print PW
# These if statements see if there is a new highest or lowest value for the categories.
if (PD>HPD)
{
HPD=PD
HPDname=$1
}
if (PD<LPD)
{
LPD=PD
LPDname=$1
}
if (PW>HPW)
{
HPW=PW
HPWname=$1
}
if (PW<LPW)
{
LPW=PW
LPWname=$1
}
}
# Prints off all of the ending information that we have been keeping track of.
END {
print "The highest population density: "HPDname" "HPD
print "The lowest population density: "LPDname" "LPD
print "The highest percentage of water: "HPWname" "HPW
print "The lowest percentage of water: "LPWname" "LPW
}
Você está misturando o Bash como a sintaxe da variável e o awk.
Bash:
variable='something'
echo $something
awk:
variable="something"
print variable
o awk usa $ para as variáveis de campo, como $ 1, $ 2, $ 0, $ NF, mas NÃO para as variáveis que você criou. Eu acho que é mais ou menos certo tecnicamente, embora eu tenha que admitir que nunca li sobre os detalhes.