Exemplo de utilização do | (pipe)

Como já comentei em alguns posts atrás, o | (pipe) é um redirecionador de comandos muito útil. Ele funciona como se fosse um tubo…  pegando a saída de um comando e passando para outro!

Vejamos a utilização do pipe com os comandos head e tail. Vamos usar o tão-usado /etc/passwd para exemplo. Com os comandos head e o tail, consigo ver o início e o fim do arquivo.

Agora, imaginando que eu por algum motivo queira ver o que tem no meio de /etc/passwd!

Infelizmente, eu teclei “m<tab><tab>” e não apareceu nenhum comando chamado meiol =/

Então, lancei mão do pipe, e olha abaixo o que resultou essa experiência…

Problema:
Meu arquivo /etc/passwd possui 30 linhas! Como descobri isso?

Utilizei o comando:

# wc -l /etc/passwd
30 /etc/passwd

Esse wc vem de “word count” e o parâmetro -l serve para contagem de linhas🙂 .

Continuando com o problema, sei que meu arquivo tem 30 linhas, e eu desejo ver da linha 15 até a linha 25. Como resolver isso, utilizando os comandos head e tail?

Solução

1º) Verificar onde está a linha 15 do arquivo… para isso, usamos o comando cat (que é um visualizador de arquivos em modo texto) com a opção -n, que serve para numerar as linhas:

# cat -n /etc/passwd

2º) Agora, vamos fazer uma “continha de padeiro”:
25 (a linha final que desejo ver) – 15 (a linha inicial) = 10
Tenho agora em mãos, a quantidade de linhas que desejo visualizar😉 .

3º) Resolvendo o problema com o head, pipe e o tail:

# cat -n /etc/passwd | head -25 | tail -11
15  list:x:38:38:Mailing List Manager:/var/list:/bin/sh
16  irc:x:39:39:ircd:/var/run/ircd:/bin/sh
17  gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
18  nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
19  Debian-exim:x:100:102::/var/spool/exim4:/bin/false
20  statd:x:101:65534::/var/lib/nfs:/bin/false
21  identd:x:102:65534::/var/run/identd:/bin/false
22  ivani:x:1000:1000:,,,:/home/ivani:/bin/bash
23  sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
24  vana:x:1001:1001:,,,:/home/vana:/bin/bash
25  josue:x:1002:1002:,,,:/home/josue:/bin/bash

E colocamos para o tail mostrar 11 linhas ao invés de 10 pois o tail mostra exatamente as 10 últimas linhas… e queremos ver a linha anterior também que é exatamente a linha 15.

Vimos nesse exemplo, que o pipe trabalhou bastante! Pegou a saída do comando cat -n /etc/passwd e passou para o head mostrar as 25 primeiras linhas do arquivo, e depois, ainda entrou em ação, pegando a saída do comando head e passou para o tail finalizar, mostrando as últimas 11 linhas, que é o nosso resultado final!

0 Responses to “Exemplo de utilização do | (pipe)”



  1. Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
agosto 2008
S T Q Q S S D
« jul   set »
 123
45678910
11121314151617
18192021222324
25262728293031

Flickr Photos

Morning Silence

Mais fotos

%d blogueiros gostam disto: