Exibindo determinada linha de um arquivo no terminal
Dica publicada em Linux / Comandos
Exibindo determinada linha de um arquivo no terminal
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
Configurando o Apache + PHP + MySQL com o Xoops
Mudando o editor padrão do crontab
Leitura recomendada
Gravador de área de trabalho nativo do Gnome 3
Copiando arquivos e mantendo a estrutura original de diretórios
Comentários
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
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
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!
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!
leaf, brigadão!
esta dica me ajudou bastante para a criação de um script (disponível em breve).
esta dica me ajudou bastante para a criação de um script (disponível em breve).
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+.
$ 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+.
Uma ótima e útil dica. Parabéns.
_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782
_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782
[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.
Eu respondi assim:
cat arquivo | head -5 | tail -1
Dá certo tb :D