【发布时间】:2014-09-04 13:10:15
【问题描述】:
好的,所以花了 2 天后,我无法解决它,我现在几乎没有时间了。这可能是一个非常愚蠢的问题,所以请多多包涵。我的 awk 脚本执行以下操作:
BEGIN{ n=50; i=n; }
FNR==NR {
# Read file-1, which has just 1 column
ids[$1]=int(i++/n);
next
}
{
# Read file-2 which has 4 columns
# Do something
next
}
END {...}
它工作正常。但现在我想将其扩展为读取 3 个文件。比方说,我需要读取一个属性文件并从中设置“n”的值,而不是硬编码“n”的值。我找到了this question 并尝试过这样的事情:
BEGIN{ n=0; i=0; }
FNR==NR {
# Block A
# Try to read file-0
next
}
{
# Block B
# Read file-1, which has just 1 column
next
}
{
# Block C
# Read file-2 which has 4 columns
# Do something
next
}
END {...}
但它不起作用。块 A 为 file-0 执行,我可以从属性文件中读取属性。但是块 B 对文件 file-1 和 file-2 都执行。并且 Block C 永远不会被执行。
有人可以帮我解决这个问题吗?我以前从未使用过 awk,语法非常混乱。此外,如果有人可以解释 awk 如何从不同文件中读取输入,那将非常有帮助。
如果我需要为问题添加更多详细信息,请告诉我。
【问题讨论】:
-
我很好奇 - 为什么您将 1st 文件称为
file 0而不是file 1? -
@EdMorton:我的第一个示例有文件 file-1 和 file-2。在我的下一个例子中,我需要处理一个文件before,因此我使用了file-0,这里没什么特别的。我知道
awk从 1 开始索引文件