awk读了两个文件(第一个可能是空的)

时间:2015-12-09 19:59:26

标签: bash awk

我有以下脚本:

awk '

# Write 1st file into array
NR == FNR {
    array[NR] = $0;
    next;
}

# Process 2nd file 
{
 ...
} ' file1 file2

我想要的是将第一个文件写入数组,然后在第二个文件中使用此数组。第一个文件可能为空,我的问题出现在awk读取空文件时,它不执行任何用户级awk程序代码并跳转到第二个文件。当awk正在读取时,第二个文件NR == FNR为真,而awk程序将第二个文件写入数组。

如何避免它,所以如果存在,只有第一个文件会被放入数组?

1 个答案:

答案 0 :(得分:4)

使用此条件来保护空文件格式:

ARGV[1]==FILENAME && FNR==NR {
   array[NR] = $0
   next
}

ARGV[1]将设置为awk命令行中的第一个文件名,FILENAME将表示当前正在处理的文件名。