Use isso:
awk -F, '{print FNR}' file1 file2
A variável FNR no awk fornece o número de registros para cada arquivo de entrada. Mas, quando você usa cat .. | awk awk lê o descritor de arquivo stdin, portanto o awk vê apenas 1 "arquivo".
Tente entender melhor ( FILENAME contém o arquivo atual sendo processado):
$ awk -F, '{print FILENAME" "FNR}' file1 file2
file1 1
file1 2
file1 3
file2 1
file2 2
file2 3
file2 4
$ cat file1 file2 | awk -F, '{print FILENAME" "FNR}'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Como você pode ver no primeiro exemplo, há dois arquivos sendo processados, no segundo exemplo o FILENAME é - , indicando a entrada padrão.
Editar: Veja o seguinte exemplo:
$ cat file1 | awk -F, '{print FILENAME" "FNR}' - file1 <(cat file1)
- 1
- 2
- 3
file1 1
file1 2
file1 3
/dev/fd/63 1
/dev/fd/63 2
/dev/fd/63 3
Primeiro, o awk lê a partir do stdin (a parte cat file1 , também como um parâmetro - to awk). Então o regular file1 . Finalmente, a parte <(cat file1) , que cria um canal ( /dev/fd/63 ), de onde o awk lê.