2015-12-09 1 views
1

У меня есть следующий сценарий:Awk прочитал два файла (первый может быть пустым)

awk ' 

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

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

То, что я хочу, чтобы написать 1-ый файл в массив, а затем использовать этот массив в 2-файле. Первый файл может быть пустым, моя проблема появляется, когда awk читает пустой файл, он не выполняет какой-либо программный код awk на уровне пользователя и пропускает второй файл. Когда awk читает второй файл, NR == FNR является истинным, а awk-программа записывает 2-й файл в массив.

Как я могу избежать этого, так что только первый файл будет помещен в массив, если он существует?

ответ

4

Используйте это условие для сохранения пустой файл scenarion:

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

ARGV[1] будет установлен на первом имени файла в командной строке AWK и FILENAME будет представлять текущее имя файла, обрабатываемого.

+1

Спасибо, работая как ожидалось :) – Steve

Смежные вопросы