РЕДАКТИРОВАТЬ: Поскольку OP требует вывода в определенном формате и НЕ требует только подсчета файлов, поэтому добавьте следующее решение сейчас, которое также должно учитывать количество пустых файлов (проверено изаписано в GNU awk
)
awk '
FNR==1{
FNUM++
}
{
print FILENAME, NR, FNR, FNUM, $0
}
ENDFILE{
if(FNUM==prev){
FNUM++
print FILENAME, 0, 0, FNUM, "Empty file"
}
prev=FNUM
}' file1 file2
Вывод для 1 Input_file1 и пустого Input_file2 происходит следующим образом.
file1 1 1 1 a
file1 2 2 1 b
file1 3 3 1 c
file2 0 0 2 Empty file
Решения, когда нужно узнать общее количество файлов, обработанных командой awk
:
1-е решение: Не могли бы вы попробовать следующее, используя GNU awk
(учитывая, что здесь вы не хотите считать пустые файлы).
awk 'NF{count++;nextfile} END{print count}' Input_file1 Input_file2
2-е решение: Если вы хотите узнать только количество файлов, переданных команде awk
, попробуйте выполнить следующее.
awk 'END {print ARGC-1}' Input_file1 Input_file2
Объяснение приведенных выше кодов с примерами: Допустим, следующие являются Input_files, где Input_file1 имеет содержимое, а Input_file2 является пустым файлом следующим образом:
cat Input_file1
a
b
c
> Input_file2
Теперь, когда мы запускаем команду ARGC
, мы получаем вывод в виде 2 файлов.
awk 'END {print ARGC-1}' Input_file1 Input_file2
2
Теперь, когда я запускаю свою 1-ю команду, она выдает 1 файл, так как он не считает пустой файл.
awk 'NF{count++;nextfile} END{print count}' Input_file1 Input_file2
1