我有以下脚本:
awk '
# Write 1st file into array
NR == FNR {
array[NR] = $0;
next;
}
# Process 2nd file
{
...
} ' file1 file2
我想要的是将第一个文件写入数组,然后在第二个文件中使用此数组。第一个文件可能为空,我的问题出现在awk读取空文件时,它不执行任何用户级awk程序代码并跳转到第二个文件。当awk正在读取时,第二个文件NR == FNR
为真,而awk程序将第二个文件写入数组。
如何避免它,所以如果存在,只有第一个文件会被放入数组?
答案 0 :(得分:4)
使用此条件来保护空文件格式:
ARGV[1]==FILENAME && FNR==NR {
array[NR] = $0
next
}
ARGV[1]
将设置为awk命令行中的第一个文件名,FILENAME
将表示当前正在处理的文件名。