I am not clear why blank lines are being printed instead of their correct values from day[] array in AWK.
BEGIN{
day[1]="Sunday"
day["first"]="Sunday"
day[2]="Monday"
day["second"]="Monday"
day[4]="Wednesday"
day["fourth"]="Wednesday"
day[3]="Tuesday"
day["third"]="Tuesday"
for (i in day)
{
print $i
print day[$i]
}
}
Explicity printing out individual array elements yield the expected values as follows:
BEGIN{
day[1]="Sunday"
day["first"]="Sunday"
day[2]="Monday"
day["second"]="Monday"
day[4]="Wednesday"
day["fourth"]="Wednesday"
day[3]="Tuesday"
day["third"]="Tuesday"
print day[1]
print day["first"]
print day[2]
print day["second"]
print day[3]
print day["third"]
print day[4]
print day["fourth"]
}
I am running Linux fedora 5.12.11-300.
Many thanks in advance,
Mary
You shouldn't use $ while printing i or array value as it refers to value of field in awk language, use following instead. Also you need not to use 2 times print statements, you could use single print with newline in it too.
awk '
BEGIN{
day[1]="Sunday"
day["first"]="Sunday"
day[2]="Monday"
day["second"]="Monday"
day[4]="Wednesday"
day["fourth"]="Wednesday"
day[3]="Tuesday"
day["third"]="Tuesday"
for (i in day)
{
print i ORS day[i]
}
}'
Improved version of awk: Also you need to to use 2 statements for same value, you can define them in single assignment way. Even with different indexes having same values it should work, that will save few lines of code :)
awk '
BEGIN{
day[1]=day["first"]="Sunday"
day[2]=day["second"]="Monday"
day[4]=day["fourth"]="Wednesday"
day[3]=day["third"]="Tuesday"
for (i in day)
{
print i OFS day[i]
}
}'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With