AprendiNoLinux
(usa Ubuntu)
Enviado em 05/09/2011 - 20:33h
Parece que não está dando certo.
Imaginei que a saída seria usar sed, mas não consegui utilizar sem algum tipo de exemplo prático.
Pensei em fazer um contador como sugerido. O problema é que quando o arquivo é grande vai ser lido integralmente. Parece que a solução em sed iria operar sobre o arquivo inteiro.
A ideia é pegar só o início e parar. Pegar o final e parar.
Dúvida: Sempre tem que ler o arquivo inteiro para pegar as primeiras ou últimas linhas ?
Exemplo de como estava tentando:
==================================
#!/bin/bash
# top_fin.sh
# Sintaxe: ./linhas.sh arquivo L1 L2
# $1 #arquivo a ser lido
# $2 #quantidade de linhas iniciais a serem lidas
# $3 #quantidade de linhas a serem lidas do final do arquivo
function top_fim()
{
declare -a _top_fim
echo "*****Primeiras" $2 "linhas*****"
top_fim=$(head -$2 $1)
echo "*****Ultimas" $3 "linhas*****"
top_fim=$(tail -$3 $1)
echo ${top_fim[@]}
return
}
mytopfim=$(top_fim $1 $2 $3)
echo "${mytopfim[@]}"
exit
==========================
Já desisti de tentar usar um comando só. Tá valendo qualquer solução que seja rápida e eficiente.
Sempre lembrando que os arquivos que irão usar esta função podem ser bem grandes.
Por este motivo, pensei em algo que leia só o início (algumas linhas) e o final (algumas linhas)
Obrigado.
oops: Parece que a melhor solução está na sugestão do @lucasdona , mas precisa mudar numeradores dos parametros.