我有以下代码:
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}' > tempawk命令接收输入中两个文件。我想了解检查是在比较文件时进行的。
谢谢
发布于 2016-05-31 09:38:57
如果您只是询问脚本如何确定它正在处理的是哪个文件,这就是FNR==NR的问题。
FNR变量是当前正在处理的文件的记录号,当您开始处理新文件时,该变量将重置回1。
NR变量是正在处理的所有文件集的记录号,它在移动到新文件时不会重置。
因此,对于正在处理的第一个文件,FNR和NR将是相等的。假设您正在处理三个文件,每个文件的长度为100行。NR和FNR的值如下:
File # NR FNR
------ ------- -------
File 1 1-100 1-100
File 2 101-200 1-100
File 3 201-300 1-100因此,对于问题中的第一个awk脚本,第一个文件仅用于填充a数组。使用next可以保证不会为该文件中的行运行其他代码。
第二个文件将使用某些列中的值来输出列以及先前创建的数组中的相关值。
https://stackoverflow.com/questions/37272108
复制相似问题