首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解awk代码示例

了解awk代码示例
EN

Stack Overflow用户
提问于 2016-05-17 17:23:17
回答 1查看 55关注 0票数 0

我有以下代码:

代码语言:javascript
复制
awk -F\; 'FNR==NR{a[$3]=$3;a[$9]=$9;a[$11]=$11;next}(a[$3]!=""){print $3, $9, $11, a[$3], a[$9], a[$11]}' $fileB $fileA |awk '($4!="" && $5=="" && $6==""){print $1}' > temp

awk命令接收输入中两个文件。我想了解检查是在比较文件时进行的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-05-31 09:38:57

如果您只是询问脚本如何确定它正在处理的是哪个文件,这就是FNR==NR的问题。

FNR变量是当前正在处理的文件的记录号,当您开始处理新文件时,该变量将重置回1。

NR变量是正在处理的所有文件集的记录号,它在移动到新文件时不会重置。

因此,对于正在处理的第一个文件,FNRNR将是相等的。假设您正在处理三个文件,每个文件的长度为100行。NRFNR的值如下:

代码语言:javascript
复制
File #        NR       FNR
------   -------   -------
File 1     1-100     1-100
File 2   101-200     1-100
File 3   201-300     1-100

因此,对于问题中的第一个awk脚本,第一个文件仅用于填充a数组。使用next可以保证不会为该文件中的行运行其他代码。

第二个文件将使用某些列中的值来输出列以及先前创建的数组中的相关值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37272108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档