segunda-feira, 30 de abril de 2012

103.2 Processar fluxos e textos com uso de filtros


Olá pessoal, hoje estamos entrando no Tópico "103.2 Processar fluxos e textos com uso de filtros", segundo o site da lpi.org os seguintes comando termos e utilitários necessários saber são:

Terms and Utilities

    cat  -  cut  -  expand  -  unexpand  -  fmt  -  head  -  od  -  join
    nl  -  paste  -  pr  -  sed  -  sort  -  split  -  tail  -  tr  -  uniq  -  wc



cat

O comando cat serve para verificarmos o conteúdo de um determinado arquivo.

# cat /etc/issue







O arquivo issue localizado dentro de /etc/ contém a versão da distribuição que estamos utilizando, como podemos ver estou utilizando o Ubuntu na sua versão 11.10


tac


O comando tac faz a mesma coisa do comando cat, porém invertendo o conteúdo do arquivo.

# tac /etc/issue




Como podemos ver, a linha que estava abaixo "versão da minha distro" agora está acima.


cut 


O comando cut serve para exibirmos somente um determinado conteúdo de um arquivo, ou arquivo de configuração ou arquivo de log, ele trabalha com separador ou delimitador de conteúdo, exemplo ":" espaço, virgula, tab.

Sua sintaxe é a seguinte:

# cut -d (delimitador) ':' -f (coluna) 1,2 (arquivo) /etc/passwd

# cut -d ':' -f 1,2 /etc/passwd




Como podemos ver o comando cut "cortou" e está exibindo somente as duas primeiras colunas do arquivo /etc/passwd


expand and unexpand


Quando criamos arquivos exemplo text1 e text2, criamos o text2 com tabulações. Às vezes, você desejará trocar as tabulações por espaços, e vice-versa. Isso é feito com os comandos expand e unexpand.



fmt


O comando fmt serve para formatarmos um arquivo, caso o mesmo esteja desconfigurado por exemplo.

Um exemplo é determinar quantos caracteres serão exibidos por linha de um determinado arquivo.

# fmt -w 20 arquivo_qualquer

Aqui está dizendo que será exibido somente 20 caracteres por linha do "arquivo_qualquer"

Testando:





Como podemos ver, eu criei um arquivo com algo escrito onde a primeira linha tem mais de 20 caracteres, e a segunda tem exatamente 20 caracteres.

Para mais opções de uso do comando fmt, utilizar o comando "man fmt"



head

o comando head executado sem argumento serve para mostar as primeiras 10 linhas de um determinado arquivo, se usarmos o parametro -n podemos especificar quantas linhas seram exibidas, e a opção -c determinamos quantos caracteres serão exibidos.


# head /etc/passwd

É exibido somente as primeiras 10 linhas do arquivo /etc/passwd




Agora determinando quantas linhas.

# head -n 5 /etc/passwd



É exibido somente as primeiras 5 linhas do arquivo /etc/passwd




OD


O comando od serve para convertermos o conteúdo de um arquivo em outro formato, tipo Hexadecimal ou Octal.

Alguns argumentos para serem utilizados junto ao comando od são:

-a -> Nome do caractere
-c -> ASCII
-o -> Octal
-x -> Hexadecimal

Testando o comando com algumas das suas opções de uso:





nl


O comando nl serve para numerar linhas de um arquivo, muito útil para procurar erros em arquivos de configuração.
O comando dado sem opção não numera as linhas que estiverem em branco.


Testando o comando:

# nl /etc/passwd





O comando nl mais as opções "b a", vão numerar as linhas que estiverem em branco.


# nl /etc/passwd





Editei o arquivo /etc/passwd e dei alguns espaços para verificarmos que ele numerou as linhas em branco.


paste


O comando paste serve para juntarmos colunas de arquivos diferentes.

Exemplo:





Eu criei dois arquivos .txt com conteúdos diferentes, onde um complementa o outro, e usei o comando paste para juntar as colunas dos dois arquivos.


pr


O comando pr serve para formatar um arquivo, muito usado para arquivos que seriam impressos, deixando melhor a visualização.

O padrão dele é 66 linhas por 72 caracteres por linha.

Sintaxe:

# pr arquivo

Mais informações  # man pr


sed


O comando sed, resumidamente falando serve para substituir uma palavra de um texto por outra palavra.

sintaxe: sed 's/<string-velha>/<string-nova>/g' <arquivo>

Testando:

# sed 's/blog/linux-study-lpi/g' arquivo_subst_txt

Foi criado um arquivo contendo um texto qualquer onde a palavra que estivesse dentro de parenteses fosse substituída por outra palavra.

Testando:




Como podemos ver na imagem acima funcionou!!

Claro o comando tem varias outras funções, mas como estou resumindo tudo sobre os comandos, por enquanto é só isso.


sort 


O comando sort serve para organizar o conteúdo de um arquivo por ordem alfabética ou numérica.

Usado sem argumento ele vai deixar seu texto em ordem alfabética.

sintaxe :

# sort arquivo.txt

Testando:

# sort arquivo_subst_txt




split



O comando split serve para dividirmos um determinado arquivo em pedaços menores, você pode dividir o arquivo por numero de linhas ou por numero de bytes, sua sintaxe é a seguinte:

# split --lines=100 arquivo.txt -> vai dividir o arquivo.txt em vários arquivos contendo 100 linhas cada

# split --bytes=1024 arquivo.txt vai dividir o arquivo.txt cada um com 1024 bytes ou 1 kb.

Testando:




O que foi feito?

Peguei o conteúdo do comando dmesg (O dmesg mostra informações a respeito do Kernel, como inicialização de módulos, montagens, suporte de dispositivos e sistemas de arquivos) e joguei dentro do arquivo.txt.

Depois criei um diretório testando_comando_split e movi o arquivo.txt para dentro.

Entrei dentro do diretório testando_comando_split e rodei o comando:

# split --lines=100 arquivo.txt -> onde foi criado alguns arquivos contendo 100 linhas  cada.

Como podemos ver no final da imagem, os arquivos criados contém suas iniciais com xaa, xab, e assim por diante, caso você queira definir um nome para esses arquivos você precisa colocar no final da linha de comando o nome que você deseja, como em:

# split --lines=100 arquivo.txt arq-




Ficando como na imagem acima!!



Agora vamos testar com a opção --bytes

# split --bytes=1024 arquivo.txt -> será criado vários arquivos contendo 1024 bytes cada.




Existem outras opções para serem usadas com o comando split, para isso rodar "man split" e testar!!



tail


O comando tail, serve para verificarmos as ultimas linhas de um arquivo, muito utilizado para verificar logs, por padrão ele vai lhe mostrar as últimas dez linhas de um arquivo. Ele tem varias opções se olharmos em "man tail"  uma das opções que são interessantes são -f e -n

Com a opção -n podemos definir quantas linhas ele vai mostrar, podendo ser definido mais de 10 linhas.

Com a opção -f podemos verificar e acompanhar um arquivo de log por exemplo, contendo logs do squid, onde vamos ver os sites que estão sendo acessados pelos usuários no momento.




tr


O comando tr serve para convertermos caracteres, ele não funciona se rodarmos ele diretamente com um arquivo, ele precisa que um outro comando venha antes para que ele funcione.




Certo o que foi feito na imagem acima?

Foi criado um arquivo "ARQUIVO_MAIUSCULO.TXT" com todo o conteúdo em maiusculo, e usei o comando cat e | tr para passar o conteúdo para minusculo.

# cat ARQUIVO_MAIUSCULO.TXT | tr '[A-Z]' '[a-z]' 




cat -> Exibe o conteúdo do ARQUIVO_MAIUSCULO.TXT
| (pipe) -> Canaliza um comando
tr -> Converte os caracteres
'[A-Z]' -> Caracteres que serão convertidos, no caso os colchetes "[]" vão pegar o intervalo de A à Z.
'[a-z]' -> Como os caracteres deveram ficar


Existem várias opções para usar com o comando t, para isso "man tr" e testes!!


uniq


O comando uniq exibe o conteúdo de um arquivo, eliminando suas linhas repetidas:

sintaxe:

# uniq arquivo.txt




Na imagem acima, foi criado um arquivo contendo algumas linhas repetidas, com o comando cat ele mostra conteúdo do arquivo normalmente.
Com o comando uniq sem opção ele vai exibir o conteúdo, menos as linhas que estiverem repetidas.
O comando uniq seguido da opção -u vai mostrar somente as linhas únicas do texto.


wc


O comando wc serve para contar quantas palavras, linhas e caracteres tem dentro de um arquivo, utilizado sem opção alguma ele vai contar tudo.

As opções de uso para este comando são:

-l -> conta quantas linhas
-w -> contas as palavras
-c -> conta os caracteres

Testando:

# wc /etc/passwd



Ele me mostrou que o arquivo /etc/passwd tem 33 linhas, 55 palavras e 1614 caracteres.

Também utilizei o comando com suas opções separadamente, como podemos ver na imagem.



Bem pessoal é isso, esse tópico também foi muito extenso, mas espero que ajudem outros colegas na prova ou como consulta, bons estudos!!






Nenhum comentário:

Postar um comentário