Pular para o conteúdo

Exibindo determinada linha de um arquivo no terminal

Dica publicada em Linux / Comandos
Rafael leaf
Hits: 80.880 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Exibindo determinada linha de um arquivo no terminal

Opa, você conhece o EDLAT? Não?! É não conhece mesmo viu, eu criei essa Sigla para esta Dica hehehe.

EDLAT, é: "Exibindo Determinada Linha de um Arquivo no Terminal" ehehhee. :D

Pensei até em colocar como Título: "Conheça o EDLAT ...", mas, seria sacanagem, e com certeza você iria brigar comigo, não é mesmo?! Por ter colocado um título desses, poderia até imaginar que fiz de propósito para "forçá-lo" a ler essa dica, mas não era a intenção, tanto que, não coloquei esse título. :D

Brincadeiras a parte, vamos ao que interessa, à dica.

Bom, devido a uma pergunta que foi feita no dia 14/09/06 (não vou por "hoje", porque, quando o "hoje" terminar?! Vai ficar estranho né :D), sobre mostrar uma linha de um arquivo pelo terminal (onde a mesma, foi respondida por mim e um outro cara), então, resolvi mandar essa dica. Até porque, antes de escrevê-la, procurei para ver se já havia algo sobre o assunto (se tivesse não faria essa dica), e nada, não encontrei, portanto, aqui está uma breve dica.

Seguinte, vamos dizer assim, existem X meios de você fazer isso, porém mostrarei alguns. Caso você queira acrescentar mais alguma coisa, use o campo de comentários. :D

A Dica é ... para mostrar uma determinada linha de um arquivo pelo terminal, faça o seguinte (escolha um dos comandos, e pronto).

Abra um terminal, seja ele eTERM, aTERM, qual você preferir e digite o seguinte:

cat -n "Arquivo_Desejado" | grep -n ^ | grep ^Linha_do_Arquivo: | cut -d: -f2
cat -n "Arquivo_Desejado" | grep -n ^ | grep ^Linha_do_Arquivo
cat "Arquivo_Desejado" | grep -n ^ | grep ^Linha_do_Arquivo: | cut -d: -f2
cat "Arquivo_Desejado" | grep -n ^ | grep ^Linha_do_Arquivo


Exemplos dos comandos acima:

$ cat -n "Arquivo_Exemplo" | grep -n ^ | grep ^7: | cut -d: -f2
$ cat -n "Arquivo_Exemplo" | grep -n ^ | grep ^7
$ cat "Arquivo_Exemplo" | grep -n ^ | grep ^7: | cut -d: -f2
$ cat "Arquivo_Exemplo" | grep -n ^ | grep ^7


Outros tipos de comandos, mas com os resultados diferentes...

cat -n "Arquivo_Desejado" | grep "Linha_do_Arquivo"
cat -n "Arquivo_Desejado" | sed '7s/Linha_do_Arquivo//'
cat -n "Arquivo_Desejado" | sed '7s/Linha_do_Arquivo/Palavra_Desejada/'


Exemplos dos comandos acima:

$ cat -n "Arquivo_Exemplo" | grep "7"
$ cat -n "Arquivo_Exemplo" | sed '7s/7//'
$ cat -n "Arquivo_Exemplo" | sed '7s/7/Essa Linha Que Eu Quero:>/'


Veja a imagem para entender melhor:

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Nota: O primeiro comando mostra todas as linhas do arquivo que tenha o número 7 (exemplo: 7, 17, 27, etc), já o segundo e o terceiro, ambos vão mostrar TODAS as linhas do arquivo, porém o segundo mostra todas as linhas, mas sem o número dela e o terceiro, além de mostrar todas as linhas, adiciona uma palavra antes da linha (a palavra que você escolher).

Vejamos mais exemplos...

Esses são bem dizer, o mesmo que os 3 (três) anteriores, mas, não será exibido no terminal, e sim, criado um arquivo com o resultado, vejamos:

cat -n "Arquivo_Desejado" | grep "Linha_do_Arquivo" >>/Diretório/Arquivo
cat -n "Arquivo_Desejado" | sed '7s/Linha_do_Arquivo//' >>/Diretório/Arquivo
cat -n "Arquivo_Desejado" | sed '7s/Linha_do_Arquivo/Palavra_Desejada/' >>/Diretório/Arquivo


Exemplos dos comandos acima:

$ cat -n "Arquivo_Exemplo" | grep "7" >>/tmp/Arq_Tmp01
$ cat -n "Arquivo_Exemplo" | sed '7s/7//' >>/tmp/Arq_Tmp02
$ cat -n "Arquivo_Exemplo" | sed '7s/7/Essa Linha Que Eu Quero:>/' >>/tmp/Arq_Tmp03


Bom, se tratando de uma dica, ficarei por aqui, são apenas alguns exemplos, como informei no começo dessa dica.

Mas antes de finalizar, veja a imagem com todos os resultados de cada comando.


Pronto, terminou-se a dica.

Espero que seja útil para alguém...

Até mais.
Rafael

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Colocando sombreamento no Fluxbox

Configurando o Apache + PHP + MySQL com o Xoops

Mudando o editor padrão do crontab

Tocando som com o style do Fluxbox

O Gimp, você sabia que...

Gravador de área de trabalho nativo do Gnome 3

Comando dd para Iniciantes

Copiando arquivos e mantendo a estrutura original de diretórios

Utilizando o Aptitude

Criando apresentação em Latex

#1 Comentário enviado por metalrufflez em 27/09/2006 - 12:18h
Hehehe, um tempo atras me fizeram essa pergunta, exibir a quinta linha no terminal...
Eu respondi assim:

cat arquivo | head -5 | tail -1

Dá certo tb :D
#2 Comentário enviado por leaf em 28/09/2006 - 01:22h
opa, mais um pra galera ;dd ...

E como vc comentou, vo mandar otro tbm heehe ...
Tipow se vc fizer sem o "tail -1", da certo tbm ;dd ...
mas, no caso aí, ele mostra as 5 (cinco) Primeiras Linhas do Arquivo ...

Exemplo do comando:
cat Arquivo_Exemplo | head -5

Resultado ...:
Linha Número 1
Linha Número 2
Linha Número 3
Linha Número 4
Linha Número 5

Vlw ...
;dddd
#3 Comentário enviado por xerxeslins em 01/04/2009 - 04:34h
Gostei! =D

Obrigado pela informação!

Agora tenho mais um desafio pra vc:

Como eu faço para mostrar o conteúdo de um arquivo de texto, apenas a partir de uma determinada linha, que contenha uma determinada palavra?

Por exemplo, se eu tenho um arquivo com o seguinte conteúdo:

bolacha
bacia
bola
bolinho
bolo
balão

Como seria o comando pra listar o conteúdo do arquivo a partir da linha que tem a palavra bacia?
Não é pelo número da linha, pois eu poderia colocar "bacia" em outra linha e o mesmo comando teria que funcionar.

Essa eu perguntei, pois eu nao tenho a mínima idéia de como solucionar.

Se puder, poderia ao menos me dar uma dica sobre que comandos ou parâmetros eu teria que usar?

Valeu!
#4 Comentário enviado por vambboy em 25/08/2009 - 18:46h
leaf, brigadão!
esta dica me ajudou bastante para a criação de um script (disponível em breve).
#5 Comentário enviado por spish em 03/05/2010 - 13:46h
Olá amigo essa dica aqui também dá certo:

$ cat "arquivo" | sed -n -e "linha a ser exibida"p

Por exemplo, possuo um arquivo teste.txt com seguinte conteúdo e quero exibir a quinta linha:

nada
poxa
P@ssw0rd
p@ssw0rd
iorgute
brega
frutinha
123456
senha
[*****]
abcdefghi

Então faz-se:

$ cat teste.txt | sed -n -e 5p
iorgute

T+.
#6 Comentário enviado por wagnerfs em 11/02/2015 - 11:00h
Uma ótima e útil dica. Parabéns.

_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782
#7 Comentário enviado por lucasrc em 17/04/2017 - 14:40h

[3] Comentário enviado por xerxeslins em 01/04/2009 - 04:34h

Gostei! =D

Obrigado pela informação!

Agora tenho mais um desafio pra vc:

Como eu faço para mostrar o conteúdo de um arquivo de texto, apenas a partir de uma determinada linha, que contenha uma determinada palavra?

Por exemplo, se eu tenho um arquivo com o seguinte conteúdo:

bolacha
bacia
bola
bolinho
bolo
balão

Como seria o comando pra listar o conteúdo do arquivo a partir da linha que tem a palavra bacia?
Não é pelo número da linha, pois eu poderia colocar "bacia" em outra linha e o mesmo comando teria que funcionar.

Essa eu perguntei, pois eu nao tenho a mínima idéia de como solucionar.

Se puder, poderia ao menos me dar uma dica sobre que comandos ou parâmetros eu teria que usar?

Valeu!


Muito massa! segue um exemplo tosco que fiz agora. Você escreve um arquivo com esse conteúdo ai e coloca o nome dele de "teste.txt" dai você roda a seguinte linha:

$ palavra=bacia; linha=`cat -n teste.txt | grep -w "$palavra" | cut -d ' ' -f 6 | cut -f 1`; qt=`wc -l teste.txt | cut -d ' ' -f 1`; sed -n ''$linha','$qt'p' teste.txt

Onde a variável "palavra" recebe o nome da palavra que vc ta buscando. Deve ter outra maneira muito mais fácil, mas ai tá um exemplo rápido que pensei agora.

Abraço.

Contribuir com comentário

Entre na sua conta para comentar.