On 8/10/05, Ricardo <[EMAIL PROTECTED]> wrote:
> Alguem sabe me dizer como fazer no awk para definir
> um range de campos a serem impressos sem precisar
> especificar um a um:
>
> 1) do campo 4 ao 10
Não sei se há método mais fácil, mas aqui vai minha sugestão:
awk -f /usr/share/awk/join.awk \
--source='{ split($0, f); print join(f,4,10) }' arquivo.txt
> 2) do campo 3 ao final
awk -f /usr/share/awk/join.awk \
--source='{ split($0, f); print join(f,3,$NF) }' arquivo.txt
Conteúdo do arquivo /usr/share/awk/join.awk, caso ele não exista no seu sistema:
# join.awk --- join an array into a string
#
# Arnold Robbins, [EMAIL PROTECTED], Public Domain
# May 1993
function join(array, start, end, sep, result, i)
{
if (sep == "")
sep = " "
else if (sep == SUBSEP) # magic value
sep = ""
result = array[start]
for (i = start + 1; i <= end; i++)
result = result sep array[i]
return result
}
--
Anderson Lizardo
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html