Você pode usar nl
para numerar as linhas do arquivo antes de passar por elas:
$ cat testfile
a
b
c
$ nl -b a testfile
1 a
2 b
3 c
Observe que -b a
é obrigatório porque, por padrão, nl
não faz o número de linhas em branco.
Claro, isso será ineficiente se o arquivo for muito grande, pois ele será executado duas vezes no arquivo.
Talvez uma alternativa melhor seja usar seu próprio contador de linha para que você só precise acessar o arquivo uma vez:
COUNT=0
while read -r line; do
COUNT=$(( $COUNT + 1 ))
if [ ... ];then
# Do things to the line
# Make use of COUNT to show line number
fi
done < your_file_here
Isso só funcionará se você estiver processando o arquivo linha por linha. Não funcionará se você estiver usando grep
, por exemplo.