加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 22:10:56 所属栏目:安全 来源:网络整理
导读:我正在运行以下命令,只要它们在第一个文件中是内容的,它就会很好用: awk -F,'FNR==NR {a[tolower($1)]++; next} !a[tolower($1)]' OutSideSyncUsers.csv NewUsers.csv 如果第一个文件为空,则该命令不起作用.我在网上找到了这个参考: all the programs that
我正在运行以下命令,只要它们在第一个文件中是内容的,它就会很好用:

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确保第一个块仅对参数列表中的第一个文件执行.当第一个文件为空时,它将跳过第一个块.这样你确保第二个块!a [tolower($1)]总是在参数列表中的第二个文件上执行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读