Exibindo determinada linha de um arquivo no terminal

Publicado por Rafael em 27/09/2006

[ Hits: 77.180 ]

 


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:


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

Outras dicas deste autor

Colocando sombreamento no Fluxbox

Acesso SSH/FTP no Linux pelo Windows

Configurando o Apache + PHP + MySQL com o Xoops

Mudando o editor padrão do crontab

O Gimp, você sabia que...

Leitura recomendada

Listando arquivos pela data

Forçar montagem de partição NTFS Windows

Instale o kernel 3.10 no elementary OS

Lidando com processos

Consultando qual o repositório está ativo no slackpkg usando apenas o grep

  

Comentários
[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
idiota
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts