eu não digo q devemos evitar o uso do
cat arquivo | grep expressão
quando estamos tentando compreender o problema, essa construção aparece naturalmente. as vezes o texto é grande então é facil colocar um head/tail para restringir enquanto a gente pensa.
entretanto quando a gente ja sabe como pesquisar e queremos fazer isso varias vezes ( atraves de um script por exemplo ) ai vale a pena pensar em remover coisas q vão atrapalhar o desempenho, isso vai acontecer certamente se vc lida com muitos arquivos ( ou arquivos muito grandes, ou NFS, etc ).
as vezes isso
cat arquivo | grep expressao | sort | uniq -c
pode ser mais eloquente do que
awk '/expressao/{ array[$0]++ } END{for( i in array) print i, array[i] }' arquivo
mas a gente não precisa exagerar né :)