了解awk代码示例

时间:2016-05-17 09:23:17

标签: unix awk sh

我有以下代码:

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命令在输入中接收2个文件。我想了解在比较文件时进行的检查。

由于

1 个答案:

答案 0 :(得分:1)

如果你只是询问脚本如何确定它正在处理哪个文件,那就是FNR==NR位。

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

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

因此FNRNR仅对正在处理的第一个文件相同。假设您正在处理三个文件,每个文件的长度为一百行。 NRFNR的值如下:

File #        NR       FNR
------   -------   -------
File 1     1-100     1-100
File 2   101-200     1-100
File 3   201-300     1-100

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

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