Introdução ao Shell Script
O artigo traz uma introdução a Shell Script. Criaremos alguns exemplos práticos para que você consiga criar seus próprios scripts de automatização. Shell Script é um tipo de linguagem de programação que é utilizado por administradores Linux/Unix. Também é possível criar scripts para outros sistemas operacionais, mas o meu foco aqui será mesmo os sistemas Linux e suas distribuições.
Parte 6: Dicas úteis para Shell Script
Descrevo aqui o uso de alguns recursos e comando que irão auxiliar no dia a dia de um programador de Shell Scripts. Para exemplificar usaremos um arquivo de texto com o seguinte conteúdo:
# cat arquivo.txt | grep Linha
# grep Linha arquivo.txt
Para localizar ocorrências da palavra Renato:
# cat arquivo.txt | grep Renato
Para que na pesquisa, seja indiferente maiúsculas e minúsculas usamos a opção -i do comando grep:
# cat arquivo.txt | grep -i renato
Arquivo original sem filtros:
Agora iremos separar em duas colunas o texto e usaremos o delimitador ":" para isso, aqui usarei este caractere porque temos este caracteres em todas as linhas e nosso dia a dia verificaremos qual o caractere que iremos utilizar como delimitador.
Exibindo a coluna 1:
# cut -d: -f1 arquivo.txt
Exibindo a coluna 2:
# cut -d: -f2 arquivo.txt
Exibindo as duas colunas:
# cut -d: -f1,2 arquivo.txt
Usaremos o comando "awk" para localizar a ocorrência da palavra Renato e mostrar que o comando consegue separar o filtro exibindo as colunas desejadas.
Para filtrar o nome Renato e exibir as 3 colunas:
# cat arquivo.txt | awk '/Renato/{print $1,$2,$3}' Para filtrar o nome Renato e exibir a coluna 1:
# cat arquivo.txt | awk '/Renato/{print $1}' Para filtrar o nome Renato e exibir a coluna 2:
# cat arquivo.txt | awk '/Renato/{print $2}' Para filtrar o nome Renato e exibir a coluna 3:
# cat arquivo.txt | awk '/Renato/{print $3}' Para filtrar o nome Renato e exibir as colunas 1 e 3:
# cat arquivo.txt | awk '/Renato/{print $1,$3}'
Linha: 1 Renato
Linha: 2 Carol
Linha: 3 Maria
Linha: 4 Iracema
Linha: 5 João
Linha: 6 Pedro
Linha: 2 Carol
Linha: 3 Maria
Linha: 4 Iracema
Linha: 5 João
Linha: 6 Pedro
O comando GREP
Para localizar todas as ocorrências da palavra "linha:"# cat arquivo.txt | grep Linha
# grep Linha arquivo.txt
# cat arquivo.txt | grep Renato
# cat arquivo.txt | grep -i renato
O comando CUT
Para separarmos o nosso texto em colunas precisamos usar um outro comando bem útil: "cut" e usaremos um delimitador para exibição. Vamos aos exemplos.Arquivo original sem filtros:
Exibindo a coluna 1:
# cut -d: -f1 arquivo.txt
# cut -d: -f2 arquivo.txt
# cut -d: -f1,2 arquivo.txt
O Comando awk
O comando awk também é muito útil quando quisermos fazer filtros de conteúdos por colunas, vamos a um exemplo.Usaremos o comando "awk" para localizar a ocorrência da palavra Renato e mostrar que o comando consegue separar o filtro exibindo as colunas desejadas.
Para filtrar o nome Renato e exibir as 3 colunas:
# cat arquivo.txt | awk '/Renato/{print $1,$2,$3}' Para filtrar o nome Renato e exibir a coluna 1:
# cat arquivo.txt | awk '/Renato/{print $1}' Para filtrar o nome Renato e exibir a coluna 2:
# cat arquivo.txt | awk '/Renato/{print $2}' Para filtrar o nome Renato e exibir a coluna 3:
# cat arquivo.txt | awk '/Renato/{print $3}' Para filtrar o nome Renato e exibir as colunas 1 e 3:
# cat arquivo.txt | awk '/Renato/{print $1,$3}'