gpt4 book ai didi

bash - 空文件上的 AWK FNR==NR

转载 作者:行者123 更新时间:2023-11-29 09:09:29 26 4
gpt4 key购买 nike

我正在运行以下命令,只要它们是第一个文件中的内容,它就可以很好地工作:

awk -F, 'FNR==NR {a[tolower($1)]++; next} !a[tolower($1)]' OutSideSyncUsers.csv NewUsers.csv

如果第一个文件是空的,该命令不起作用。我在网上找到了这个引用资料:

all the programs that use the two-files idiom will not work correctly if the first file is empty (in that case, awk will execute the actions associated to NR==FNR while reading the second file). To correct that, you can reinforce the NR==FNR condition by adding a test that checks that also FILENAME equals ARGV[1].

我不确定我是否理解在查询中如何(或在哪里)添加测试检查等于 ARGV[1]

我们将不胜感激

最佳答案

您可以像这样使用此附加条件:

awk -F, 'ARGV[1] == FILENAME{a[tolower($1)]++; next} !a[tolower($1)]' OutSideSyncUsers.csv NewUsers.csv

附加条件 ARGV[1]==FILENAME 确保第一个 block 仅对参数列表中的第一个文件执行。当第一个文件为空时,它将跳过第一个 block 。通过这种方式,您可以确保第二个 block !a[tolower($1)] 始终在参数列表中的第二个文件上执行。

关于bash - 空文件上的 AWK FNR==NR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37012556/

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