sábado, 18 de maio de 2013


Seguindo com o guia da certificação LPI, vamos ver hoje alguns comandos para filtragem de dados e saídas de outros comandos. Podemos usar este tipo de comando para receber apenas os dados que precisamos ou até mesmo receber dados únicos para usá-los em scripts.


grep


O comando grep procura palavras ou expressões específicas dentro de um arquivo. O comando mostra na tela apenas as linhas do arquivo que contém a expressão procurada.

Por exemplo, vamos pegar apenas a linha do root no arquivo /etc/passwd:
grep root /etc/passwd

Este comando vai retornar algo assim:
root:x:0:0:root:/root:/bin/bash

Podemos também utilizar a flag -v para retornar todas as linhas que não contém a expressão procurada.
Outras flags interessantes:

-i - Ignora diferença entre maiúsculas e minúsculas

-n - Mostra o número da linha encontrada

-A [n] - Mostra n linhas depois

-B [n] - Mostra n linhas antes


egrep


Similar ao grep, mas um pouco mais avançado. Alguns usos para o egrep:

Encontrar uma linha que contenha "user" ou "root":
egrep "root|user" /etc/passwd

Procurar por linhas que contenham a palavra Debian ou debian:
egrep [dD]ebian /etc/passwd

Procurar por linhas que começam com a letra “b”:
egrep ^b /etc/passwd

Procurar por linhas que terminam com a palavra “false”:
egrep false$ /etc/passwd


fgrep


Ao utilizar o fgrep toda operação de expressão regular será ignorada, tornando o

processo de localização muito mais rápido. Visualize o conteúdo do arquivo /etc/shadow:
cat /etc/shadow

Agora visualize apenas as linhas que contenham o caracter $:
fgrep $ /etc/shadow


sed


O comando sed é utilizado para procurar e substituir padrões em texto, mostrando o resultado em stdout. No sed, a expressão fica circunscrita entre barras(/). Por exemplo: Deletar as linhas comentadas do arquivo “/etc/fstab:
sed -i ’/^#/d' /etc/fstab

-e - Executa a expressão e comando a seguir.

ˆ - início de linha

# - string de busca

A letra d ao lado da expressão regular é um comando sed, que indica a exclusão de linhas contendo o respectivo padrão. Para substituir uma string, utilize a opção -s: Substitua todos os caracteres "#" por "@"em /etc/fstab:
sed -e s ’/#/@/’ /etc/fstab

Substitua agora os caracteres “/” por “@” :
sed -e s ’/\//@/’ /etc/fstab

Observe que você tem que escapar o caracter “/”, pois este é o separador dos campos.

Ou mais fácil, utilize outro separador de campos:
sed -e s ’|/|@|’ /etc/fstab


cut e awk


O comando “cut” pode ser muito útil para conseguir listagens a partir de arquivos com separadores de colunas definidos. Por exemplo, para conseguir o nome de todos os usuários da máquina, ou seja, a primeira coluna do arquivo “/etc/passwd” e também seu uid , cujo delimitador de colunas é o sinal “:”, podemos usar o comando:
cut -f1 ,3 -d: --output-delimiter=" " /etc/passwd > /root/uid

Onde:

-f - coluna

1,3 - coluna 1 e 3

-d - delimitador

--output-delimiter - delimitador da saída do comando

Para o mesmo exemplo acima, agora utilizando o awk:
awk -F : ’{print $1," ",$4} ’/etc/passwd > /root/uid

Onde:

-F - delimitador

print - imprime o valor da coluna especificada

$1 - coluna1

$4 - coluna4

“ “ - delimitador da saída do comando


join e paste


O comando “join” (unir), concatena registros de dois arquivos de texto baseado em índices comuns entre os registros.

Por exemplo, podemos unir os arquivos /root/uid e /root/gid, onde o índice em comum é o nome do usuário. Para isso usamos o seguinte comando:
join /root/uid /root/gid

O comando “paste”, junta os arquivos na saída padrão. Diferente do “join”, ele joga os dois arquivos lado-a-lado.:
paste /root/uid /root/gid



E por hoje é isso!

Fique ligado no blog que não estamos nem na metade do guia da LPI 1.

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!