Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para Servidores Aula 9 - Programação avançada 2 - Pesquisa e substituição INTRODUÇÃO Os recursos de pesquisa dentro do sistema são um grande diferencial dos scripts bash. Imagine localizar a referência a um processo ou arquivo entre centenas de outros. Com um comando simples podemos exibir apenas as informações que se enquadrem nos parâmetros de�nidos. Os comandos de substituição permitem alterações em longas listas de texto para alterar partes a partir dos parâmetros de localização. OBJETIVOS Aplicar pesquisas complexas em arquivos texto; Modi�car o conteúdo de arquivos texto de forma automatizada; Compilar campos de arquivos diferentes; Reorganizar campos de arquivos. EXPRESSÕES REGULARES E METACARACTERES Expressões regulares são constituídas a partir de caracteres normais e caracteres especiais. Os caracteres especiais (ou metacaracteres) podem ser: Agora, vamos conhecer os tipos de metacaracteres com mais detalhes. PESQUISANDO TEXTOS Para a pesquisa de textos, o programa mais utilizado é o grep, que permite a busca desde simples strings até expressões regulares. Pode-se entender o grep como um conjunto de 3 programas: A sintaxe do grep é: O grep lê cada arquivo passado pela linha de comando e, quando a linha casa com o padrão pesquisado, ele mostra a linha. Quando múltiplos arquivos são passados, o nome do arquivo seguido de dois pontos (":") precede a linha. Dependendo das opções passadas, o grep pode assumir as funções do egrep e do fgrep, tornando-os obsoletos. As principais opções do grep são: SUBSTITUIÇÃO DE TEXTO COM O SED Muitos scripts, notadamente os voltados para gerar mensagens enviadas automaticamente, baseiam-se em um texto padrão que será modi�cado de acordo com seu destinatário ou �nalidade, de forma semelhante a uma “mala direta” de um editor de textos. O programa mais utilizado para tarefas como esta é o sed (stream editor) (glossário). O sed recebe um �uxo de texto como entrada e produz o resultado na saída padrão, sem modi�car os arquivos originais. O sed é um programa capaz de realizar tarefas complexas, muito além da simples substituição de textos (seu uso mais comum). As principais opções do sed são: As principais opções do sed são: PESQUISA POR CAMPOS Um arquivo pode ser considerado como um local onde são armazenados vários registros, sendo cada registro armazenado em uma linha do arquivo. Um registro normalmente contém uma série de campos separados por espaços em branco, tabulações ou por algum caractere. O arquivo de usuários do Unix, por exemplo, separa os campos utilizando o caractere dois pontos (“:”). Para selecionar campos em um arquivo, normalmente é utilizado o programa cut, que foi projetado para selecionar um ou mais campos ou grupos de caracteres de um arquivo de entrada. Sua sintaxe é: Suas principais opções são: Para extrair os nomes de usuário e seus diretórios home, pode ser utilizado o comando: Para entender o comando acima, é necessário visualizar o conteúdo de /etc/passwd usando cat: Observe que cada linha se refere a um usuário. Em cada uma, temos diversos campos separados por “:”. O primeiro campo é o nome do usuário e o sexto é o diretório do usuário. No comando cut temos: A saída vai para a tela e o arquivo lido não é alterado. Caso fosse necessário guardar a resposta, a saída poderia ser direcionada para um arquivo, como no exemplo: UNINDO CAMPOS Com o comando join, é possível unir registros de arquivos diferentes que possuam uma chave em comum. O arquivo deve estar ordenado por tal chave. A sintaxe do comando join é: Clique nos checks e veja as principais opções do join: REARRANJANDO CAMPOS Para rearranjar campos, o programa mais utilizado é o awk. No entanto, o awk é, na verdade, uma linguagem de programação criada com a �nalidade de facilitar ações em shell script. O awk lê uma linha por vez do arquivo de entrada. Para cada linha, ele aplica comandos especí�cos. A estrutura básica de um programa awk é: Um padrão omitido faz com que a ação seja executada em todas as linhas, e uma ação omitida faz com que a linha seja impressa (equivalente a {print}). O awk lê linhas de entrada e automaticamente quebra a linha em campos. É de�nida uma variável interna NF que guarda o número de campos da linha. Por padrão, os campos são separados por espaços em branco. Porém, o valor da variável FS pode ser de�nido com um novo valor de separador. Em comandos simples, pode ser utilizado o parâmetro “-F” para de�nir um novo separador. Para, por exemplo, mostrar os diretórios home dos usuários seguidos de seu nome, pode-se utilizar o comando: Para mostrar os usuários do sistema, com nome completo e nome do grupo inicial, pode-se utilizar o script abaixo: ATIVIDADE Desenvolva um script que localize todos os arquivos dentro de /etc cujo nome inicie pelos caracteres entre m e p, que sinalize quais as linhas desses arquivos se iniciem pela expressão “zone”. Resposta Correta Glossário OBSERVE ALGUNS EXEMPLOS DA UTILIZAÇÃO DO METACARACTERE PONTO: LISTA EXEMPLOS DE INTERVALOS DA LISTA: • [0-9] = [0123456789] • [a-z] = [abcdefghijklmnopqrstuvwxyz] • [A-Z] = [ABCDEFGHIJKLMNOPQRSTUVWXYZ] • [3-8] = [345678] • [d-h] = [defgh] • Letras maiúsculas, minúsculas e números = [A-Za-z0-9] Para que o traço possa ser utilizado em uma lista, ele deve estar no �nal da lista. Assim, o padrão [a-g-] casa com as letras de a até g e com o traço. EXEMPLO DE UTILIZAÇÃO DO METACARACTER ?: EXEMPLO DE UTILIZAÇÃO DO METACARACTER *: EXEMPLO DE UTILIZAÇÃO DO METACARACTER +: EXEMPLO DE UTILIZAÇÃO DO METACARACTER {N,M}: EXEMPLO DE UTILIZAÇÃO DO $: EXEMPLO DE UTILIZAÇÃO DO \B: EXEMPLOS: EXEMPLOS: AS SINTAXES MAIS COMUNS DO SED SÃO: • sed [-n] 'comando_de_edição' [arquivo...]; • sed [-n] -e 'comando_de_edição' ... [arquivo...]; • sed [-n] -f arquivo_script ... [arquivo...].
Compartilhar