gpt4 book ai didi

awk - 如何用awk处理3个文件?

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

好的,所以在花了 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 为文件 0 执行,我能够从属性文件中读取属性。但是块 B 对文件 file-1 和 file-2 都执行。并且块 C 永远不会被执行。

有人可以帮我解决这个问题吗?我以前从未使用过 awk,语法非常困惑。此外,如果有人可以解释 awk 如何从不同文件读取输入,那将非常有帮助。

如果我需要在问题中添加更多详细信息,请告诉我。

最佳答案

如果你有gawk,只需测试ARGIND:

awk '
ARGIND == 1 { do file 1 stuff; next }
ARGIND == 2 { do file 2 stuff; next }
' file1 file2

如果你没有gawk,那就得到它。

在其他 awks 中,您可以只测试文件名:
awk '
FILENAME == ARGV[1] { do file 1 stuff; next }
FILENAME == ARGV[2] { do file 2 stuff; next }
' file1 file2

如果您想两次解析同一个文件,那只会失败,如果是这种情况,您需要添加该文件打开次数的计数。

关于awk - 如何用awk处理3个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24739570/

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