gpt4 book ai didi

awk - 打印大文件中前 N 行满足特定条件的每一行

转载 作者:行者123 更新时间:2023-12-03 05:20:44 33 4
gpt4 key购买 nike

我想打印一个大文件中的每一行,其中前 10 行在特定列中具有特定值(在下面的示例中,第 9 列的值 < 1)。我不想将整个文件存储在内存中。我尝试使用 awk 来实现此目的,如下所示:

awk 'BEGIN{FS=","}
{
for (i=FNR,i<FNR+10, i++) saved[++s] = $0 ; next
for (i=1,i<s, i++)
if ($9<1)
print saved[s]; delete saved; s=0
}' file.csv

此命令的目标是保存前 10 行,然后检查每行中的第 9 列是否符合我的条件,然后打印当前行。任何有关这方面的帮助,或者关于更有效的方法的建议,我们都非常感激!

最佳答案

无需在内存中存储任何内容或对值进行任何显式循环。如果最后 10 行(含)的值为 $9 值 < 1,则打印当前行:

awk -F, '(c=($9<1?c+1:0))>9' file

当然未经测试,因为您没有提供任何示例输入或预期输出,因此请检查数学,但这是正确的方法,如果数学错误,则修复它的调整只需更改 >9>10 或任何您需要的内容。

关于awk - 打印大文件中前 N 行满足特定条件的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36957891/

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