Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Combinando os comandos head e tail
Linux user
Publicado por Fábio Berbert de Paula em 07/11/2002

Login: fabio, 6481590 pontos | Blog: https://twitter.com/fabiodovol
[ Hits: 15781 ]

Combinando os comandos head e tail

A diversidade de comandos via shell no Linux é espantosa, sendoassim, com um pipe (|) e uma pitada de criatividade, umadministrador de sistemas vai longe.

Na dica de hoje vamos aprender a combinar os comandos head etail para exibir determinadas partes de um arquivo texto. Vamosa um exemplo prático para ver como funcionará nossa combinação. Suponhaque temos o arquivo lista_nomes.txt com o seguinte conteúdo:

01. Aline Tavares Silva
02. Bruno Delgado Bonfim
03. Carla Garantizado Bela
04. Danilo Servantes
05. Eliane Costa Pinheiro
06. Elivaldo Pereira
07. Fábio Berbert de Paula
08. Felipe Azambuja
09. Gardineu Marques
10. Romário Belleza
Em nosso estudo de caso, quero exibir na tela somente o intervaloentre as linhas 5 e 8. Vamos às contas:
  • O intervalo de linhas de 5 à 8 contém 4 linhas (5, 6, 7 e 8)
  • Vamos usar o comando head para exibir as primeiras 8 linhas
  • Vamos usar o comando tail para exibir as últimas 4 das 8 linhas

Assim sendo, podemos construir o comando:
$ head -n 8 lista_nomes.txt | tail -n 4
Logo, se considerarmos a primeira linha quista como L1 e a última L2, podemosmontar o comando da seguinte forma:

$ head -n L2 <arquivo> | tail -n ((L2- L1) + 1)

Para simplificar ainda mais, vamos a um simples shell script:

#!/bin/bash
# linhas.sh
# Sintaxe: ./linhas.sh arquivo L1 L2

ARQ=$1
L1=`expr $2 + 1`
L2=$3

head -n $L2 $ARQ | tail -n $L1


Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br

Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada O comando nice
   Dica Linux recomendada Criando apresentação em Latex
   Dica Linux recomendada Usar o Putty automático
   Dica Linux recomendada Comandos e dicas importantes
   Dica Linux recomendada Montando dispositivos

Comentários
[1] Comentário enviado por uxhsilva em 23/06/2003 - 16:42h:

O script correto fica da seguinte forma :

#!/bin/bash
# linhas.sh
# Sintaxe: ./linhas.sh arquivo L1 L2

if [ -z $1 ] || [ -z $2 ] || [ -z $3 ]
then
echo -e "\nSintaxe : $0 arquivo Linha_inicio Linha_fim\n"
exit
fi

ARQ="${1}"
L1=`expr ${3} \- ${2}`
L1=`expr ${L1} + 1`
L2="${3}"

head -n $L2 ${ARQ} | tail -n ${L1}


[2] Comentário enviado por AprendiNoLinux em 05/09/2011 - 12:26h:

Se eu preciso das duas primeiras linhas do arquivo e as duas últimas linhas do arquivo ?


[3] Comentário enviado por Miqueloti em 26/03/2012 - 18:20h:

AprendiNoLinux, basta utilizar os comandos head e tail que pegam n linhas do inicio / n linhas do fim do arquivo respectivamente.

Comando:
head -n 2 seu_arquivo.txt; tail -n 2 seu_arquivo.txt;

Este comando mostraria na tela, caso queira redirecionar para um novo arquivo bastaria utilizar o operador para tal:
head -n 2 seu_arquivo.txt >> novo_arquivo.txt; tail -n 2 seu_arquivo.txt >> novo_arquivo.txt;


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.