Menu Principal

terça-feira, 17 de abril de 2012

Combinando os comandos head e tail

FONTE: http://www.vivaolinux.com.br/dica/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

Nenhum comentário:

Postar um comentário