gpt4 book ai didi

awk - 在 AWK 中循环关联数组时打印空行

转载 作者:行者123 更新时间:2023-12-04 12:32:00 25 4
gpt4 key购买 nike

我不清楚为什么打印空行而不是 AWK 中 day[] 数组的正确值。

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]
}
}

显式打印出单个数组元素会产生如下预期值:

 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"]
}

我正在运行 Linux fedora 5.12.11-300。

非常感谢,

玛丽

最佳答案

在打印 i 或数组值时不应使用 $,因为它指的是 awk 语言中字段的值,请改用以下内容.此外,您不需要使用 2 次打印语句,您也可以使用带有换行符的单次打印。

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]
}
}'

awk 的改进版本:您还需要为相同的值使用 2 个语句,您可以以单一赋值方式定义它们。即使不同的索引具有相同的值,它也应该可以工作,这将节省几行代码:)

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]
}
}'

关于awk - 在 AWK 中循环关联数组时打印空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68456057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com