Você pode grep cada arquivo e adicionar linhas extras com base no resultado do grep (ou seja, não para arquivos que não correspondem):
for fn in daily_log.201407* ; do
grep word "$fn"
if [ $? == 0 ] ; then
echo -e '\n\n\n'
fi
done
Quando faço grep em um monte de arquivos, e vários arquivos têm a palavra que estou procurando, a saída é difícil de ler, pois é um após o outro. Existe alguma maneira de inserir \ n's adicionais após a saída correspondente de cada arquivo.
Exemplo, saída atual que recebo
$ grep word daily_log.201407*
<daily_log.20140702-matches about 100 lines>
<daily_log.20140704-matches about 10 lines>
<daily_log.20140706-matches about 50 lines>
Tentando alcançar algo como
$ grep word daily_log.201407*
<daily_log.20140702-matches about 100 lines>
<daily_log.20140704-matches about 10 lines>
<daily_log.20140706-matches about 50 lines>
Espero que a pergunta esteja clara. Alguma maneira de fazer isso?
Você pode grep cada arquivo e adicionar linhas extras com base no resultado do grep (ou seja, não para arquivos que não correspondem):
for fn in daily_log.201407* ; do
grep word "$fn"
if [ $? == 0 ] ; then
echo -e '\n\n\n'
fi
done
A maneira mais fácil de fazer isso provavelmente será awk
:
awk 'FNR==1 { print "\n\n\n" } ; /word/ { print FILENAME ":" $0 }' daily_log.201407*
Isso imprime todas as linhas correspondentes a word
com o nome do arquivo antes dele (como grep
faz com vários arquivos). Antes da primeira linha de cada arquivo, ela imprime algumas linhas em branco. Ele sabe que está no início do arquivo porque FNR
(o número do arquivo linha no arquivo atual) é 1
.
Tags grep text-processing