muitas ferramentas de utilidade existem no sistema operacional Linux para pesquisar e gerar um relatório a partir de dados de texto ou arquivo. O usuário pode facilmente executar muitos tipos de pesquisa, substituição e relatório gerando tarefas usando comandos awk, grep e sed. awk não é apenas uma ordem. É uma linguagem de scripting que pode ser usada tanto no terminal quanto no arquivo awk. Ele suporta a variável, declaração condicional, array, loops etc. como outras linguagens de script., Ele pode ler qualquer arquivo linha por linha e separar os campos ou colunas com base em um delimitador específico. Ele também suporta a expressão regular para a pesquisa de string em particular no conteúdo de texto ou arquivo e toma ações se qualquer fundo corresponder. Como você pode usar o comando awk e o script é mostrado neste tutorial usando 20 exemplos úteis.,um

  • awk com dados csv
  • awk regex
  • awk sensível a maiúsculas e minúsculas regex
  • awk, com nf (número de campos) variável
  • awk gensub() função
  • awk com rand() função
  • awk função definida pelo usuário
  • awk se
  • awk variáveis
  • awk matrizes
  • awk loop
  • awk para imprimir a primeira coluna
  • awk para imprimir a última coluna
  • awk com grep
  • awk com o bash script de arquivo
  • com o sed, o awk
  • Usando awk com printf

    a função printf() é usado para qualquer formato de saída na maioria das linguagens de programação., Esta função pode ser usada com o comando awk para gerar diferentes tipos de saídas formatadas. comando awk usado principalmente para QUALQUER ficheiro de texto. Criar um ficheiro de texto chamado empregado.txt com o conteúdo indicado abaixo, onde os campos são separados por tab (‘\t’).empregado.txt

    1001 João sena 40000
    1002 Jafar Iqbal 60000
    1003 Meher Nigar 30000
    1004 Jonny Fígado 70000

    O seguinte comando awk vai ler os dados do funcionário.txt file line by line e print the first filed after formatting. Aqui, “% 10s\n ” significa que a saída terá 10 caracteres de comprimento., Se o valor da saída for inferior a 10 caracteres, os espaços serão adicionados à frente do valor.

    $ awk ‘{ printf “% 10s\n”, $1} ‘ empregado.txt

    Saída:

    Go to Content

    awk to split on white space

    the default word or field separator for spliting any text is white space. o comando awk pode tomar o valor do texto como entrada de várias formas. O texto de entrada é passado do comando echo no seguinte exemplo., O texto, ‘eu gosto de programação’ será dividido por separador padrão, espaço, e a terceira palavra será impressa como saída.

    $ echo ‘eu gosto de programação’ | awk ‘{ print $3 }’

    Resultado:

    Ir para o Conteúdo

    o awk para alterar o delimitador

    awk comando pode ser usado para alterar o delimitador de qualquer conteúdo do arquivo. Suponha que você tem um arquivo de texto chamado telefone.txt com o seguinte conteúdo em que ‘:’ é usado como separador de campo do conteúdo do ficheiro.telefone.,txt

    +123:334:889:778
    +880:1855:456:907
    +9:7777:38644:808

    Execute o seguinte comando awk para alterar o delimitador ‘:’ por ‘-‘ o conteúdo do arquivo, telefone.txt.

    $ cat phone.txt$ awk ‘$1=$1 ‘ FS=”:” OFS= ” – ” phone.txt

    Saída:

    Ir para o Conteúdo

    awk com delimitado por tabulação de dados

    o comando awk tem muitas variáveis internas que são usados para ler o texto de maneiras diferentes. Dois deles são FS e OFS., FS é um separador de campo de entrada e OFS é uma variável de separador de campo de saída. Os usos destas variáveis são mostrados nesta seção. Cria um ficheiro separado por páginas chamado input.txt com o seguinte conteúdo para testar a utilização de variáveis FS e OFS.

    Input.txt

    Client-side scripting language
    Server-side scripting language
    Database Server
    Web Server

    usando a variável FS com tab

    o seguinte comando irá dividir cada linha de entrada.o ficheiro txt baseia-se na página (‘\t’) e imprime o primeiro campo de cada linha.,

    $ awk ‘{ print $1 }’ FS=’\t’ input.txt

    Saída:

    Usando OFS variável com guia

    O seguinte comando awk irá imprimir o 9º e 5º campos de “ls -l” comando de saída com separador tab depois de imprimir o título da coluna “Nome” e “Tamanho”. Aqui, a variável OFS é usada para formatar o resultado por uma página.,

    $ ls -l
    $ ls -l | awk -v OFS=’\t’ ‘BEGIN { printf “%s\t%s\n”, “Nome”, “Tamanho”} {print $9,$5}’

    Resultado:

    Ir para o Conteúdo

    awk com dados CSV

    O conteúdo de qualquer arquivo CSV pode ser analisado de várias formas utilizando o comando awk. Criar um ficheiro CSV chamado “cliente”.csv’ com o seguinte conteúdo para aplicar o comando awk.cliente.a opção txt

    ler um campo único do ficheiro CSV

    ‘-F’ é usada com o comando awk para definir o separador para dividir cada linha do ficheiro., O seguinte comando awk irá imprimir o campo Nome do cliente.ficheiro csv.

    $ cat customer.csv
    $ awk-F”, “‘{print $2} ‘ Cliente.csv

    Saída:

    leitura de campos múltiplos, combinando com outro texto

    o seguinte comando irá imprimir três campos do cliente.csv combinando texto do título, nome, e-mail e Telefone. A primeira linha do cliente.o ficheiro csv contém o título de cada campo. A variável NR contém o número de linha do ficheiro quando o comando awk analisa o ficheiro., Neste exemplo, a variável NR é usada para omitir a primeira linha do arquivo. A saída irá mostrar os Campos 2, 3 e 4 de todas as linhas, exceto a primeira linha.

    $ awk -F “,” ‘NR>1 {print “Nome:” $2 “, Email:” $3 “, Telefone:” $4}’ cliente.csv

    Saída:

    leitura do ficheiro CSV usando um programa awk

    awk pode ser executado executando um ficheiro awk. Como você pode criar um arquivo awk e executar o arquivo é mostrado neste exemplo. Criar um ficheiro chamado unekcsv.awk com o seguinte código., A palavra-chave BEGIN é usada no script para informar o comando awk a executar o script da parte BEGIN primeiro antes de executar outras tarefas. Aqui, o separador de campos (FS) é usado para definir o separador de divisão e os Campos 2 e 1 serão impressos de acordo com o formato usado na função printf ().

    constrangcsv.awk
    BEGIN {FS =”,”} {printf “% 5s (%s)\n”, $2,$1}

    correr constrangimento.ficheiro awk com o conteúdo do cliente.ficheiro csv pelo seguinte comando.

    $ awk-f awkcsv.cliente awk.,csv

    Saída:

    Go to Content

    awk regex

    a expressão regular é um padrão que é usado para procurar qualquer texto. Diferentes tipos de tarefas complicadas de busca e substituição podem ser feitas muito facilmente usando a expressão regular. Algumas utilizações simples da expressão regular com o comando awk são mostradas nesta secção.

    Matching character set

    o seguinte comando irá corresponder à palavra “Fool” ou “bool” ou “Cool” com o texto de entrada e imprimir, se a palavra for abundante., Aqui, a boneca não vai corresponder nem imprimir.

    $ printf “Enganar\nCool\nDoll\nbool” | awk ‘/ool/’

    Resultado:

    Pesquisa de seqüência de caracteres no início da linha

    ‘^’ símbolo é usado na expressão regular para procurar qualquer padrão no início da linha. A palavra’ Linux ‘ será pesquisada no início de cada linha do texto no seguinte exemplo. Aqui, duas linhas começam com o texto, ‘Linux’ e essas duas linhas serão mostradas na saída.,

    $ echo-e “o Linux é livre para usar o\n é um software open-source\nLinuxHint é
    um blog popular do site” | awk ‘/^/ Linux’

    Resultado:

    Pesquisa de seqüência de caracteres no final da linha

    ‘$’ símbolo é usado na expressão regular para procurar qualquer padrão, no final de cada linha do texto. A palavra’ Script ‘ é pesquisada no seguinte exemplo. Aqui, duas linhas contêm a palavra, Script no final da linha.,

    $ echo-e “Script PHP\nJavaScript\nVisual de Programação” | awk ‘/Script$/’

    Resultado:

    Busca por omissão de determinado conjunto de caracteres

    ‘^’ símbolo indica o início do texto quando ele é usado na frente de qualquer padrão de seqüência de caracteres (‘/^…/’) ou antes de qualquer conjunto de caracteres declarado por ^. Se o símbolo ‘ ^ ‘ for usado dentro do terceiro parêntesis, então o carácter definido dentro do parêntesis será omitido no momento da pesquisa., O seguinte comando irá procurar qualquer palavra que não esteja a começar por ‘F’, Mas que termine por ‘ool’. Cool e bool serão impressos de acordo com o padrão e dados de texto.

    $ printf “Enganar\nCool\nDoll\nbool” | awk ‘/ool/’

    Saída:

    Ir para o Conteúdo

    awk sensível a maiúsculas e minúsculas regex

    Por padrão, expressão regular não diferencia maiúsculas de minúsculas de busca quando procura qualquer padrão de seqüência de caracteres. A pesquisa sem distinção de maiúsculas pode ser feita pelo comando awk com a expressão regular., No exemplo a seguir, a função tolower() é usada para fazer uma pesquisa sem distinção de maiúsculas. Aqui, a primeira palavra de cada linha do texto de entrada será convertida para minúscula usando a função tolower() e corresponder com o padrão de expressão regular. toupper () função também pode ser usada para este propósito, neste caso, o padrão deve ser definido por toda letra maiúscula. O texto definido no exemplo a seguir contém a palavra de pesquisa, ‘ web ‘ em duas linhas que serão impressas como saída.,

    $ echo-e “Web Design\nweb desenvolvimento\nFramework” | awk ‘tolower($0) ~ /^/ web;’

    Resultado:

    Ir para o Conteúdo

    awk, com NF (número de campos) variável

    NF é uma variável interna do awk comando que é usado para contar o número total de campos em cada linha do texto de entrada. Criar QUALQUER ficheiro de texto com várias linhas e várias palavras. entrada.o ficheiro txt é usado aqui, que é criado no exemplo anterior.,

    usando NF a partir da linha de comandos

    Aqui, o primeiro comando é usado para mostrar o conteúdo da entrada.txt file and second command is used to show the total number of fields in each line of the file using NF variable.

    $ cat input.txt
    $ awk ‘{print NF}’ input.txt

    Saída:

    usando NF no ficheiro awk

    crie um ficheiro awk chamado count.awk com o script dado abaixo. Quando este script for executado com quaisquer dados de texto, então cada conteúdo de linha com campos totais será impresso como saída.Contagem.,awk

    {print $0}
    {print””}

    execute o programa pelo seguinte comando.

    $ awk-f count.entrada de awk.txt

    Saída:

    Ir para o Conteúdo

    awk gensub() função

    getsub() é uma função de substituição que é usado para pesquisa de seqüência de caracteres baseados em particular delimitador ou padrão de expressão regular. Esta função é definida no Pacote ‘gawk’ que não está instalado por padrão. A sintaxe para esta função é dada abaixo., O primeiro parâmetro contém o padrão de expressão regular ou procurar delimitador, o Segundo parâmetro contém o texto de substituição, o terceiro parâmetro indica o modo como a pesquisa será feita e o último parâmetro contém o texto em que essa função será aplicada.

    Sintaxe:

    gensub(regexp, substituição, como )

    Execute o seguinte comando para instalar o basbaque do pacote para a utilização de getsub() função com o comando awk.

    $ sudo apt-get install gawk

    crie um ficheiro de texto chamado ‘salesinfo.,txt ‘ com o seguinte conteúdo para praticar este exemplo. Aqui, os campos são separados por uma aba.

    salesinfo.txt

    Mon 700000
    Tue 800000
    Wed 750000
    Thu 200000
    Fri 430000
    Sáb 820000

    Execute o comando a seguir para ler os campos numéricos dos salesinfo.txt file e imprimir o total de todas as quantidades de vendas. Aqui, o terceiro parâmetro, ‘ G ‘ indica a busca global. Isso significa que o padrão será pesquisado no conteúdo completo do arquivo.,

    $ awk ‘{ x=gensub(“\t”,””,”G”,$2); printf x “+” } END{ print 0 }’ salesinfo.txt | bc -l

    Saída:

    Ir para o Conteúdo

    awk com a função aleatório ()

    a função aleatório() é utilizado para gerar um número aleatório maior que 0 e menor que 1. Então, ele sempre irá gerar um número fracional menor que 1. O seguinte comando irá gerar um número aleatório fraccional e multiplicar o valor com 10 para obter um número mais do que 1., Um número fracionário com dois dígitos após o ponto decimal será impresso para a aplicação da função printf (). Se você executar o seguinte comando várias vezes, então você terá saída diferente de cada vez.

    $ awk ‘BEGIN {printf “Number is =%.2f\n” , rand()*10}’

    Saída:

    Ir para o Conteúdo

    awk função definida pelo usuário

    Todas as funções que são usados nos exemplos anteriores são funções internas. Mas você pode declarar uma função definida pelo usuário em seu script awk para fazer qualquer tarefa em particular., Suponha que você deseja criar uma função personalizada para calcular a área de um retângulo. Para fazer esta tarefa, crie um arquivo chamado ‘area.awk ‘ com o seguinte script. Neste exemplo, uma função definida pelo usuário chamada área() é declarada no script que calcula a área com base nos parâmetros de entrada e retorna o valor da área. o comando getline é usado aqui para receber dados do utilizador.área.awk

    execute o programa.

    $ awk-f area.,awk

    Saída:

    Go to Content

    awk if example

    awk supports conditional statements like other standard programming languages. Três tipos de declarações if são mostrados nesta seção usando três exemplos. Criar um ficheiro de texto com nomes de itens.txt com o seguinte conteúdo.

    itens.txt

    HDD Samsung $100
    Mouse A4Tech
    Impressora HP $200

    Simples se o exemplo:

    ele o seguinte comando irá ler o conteúdo dos itens.txt ficheiro e verificar o valor do terceiro campo em cada linha., Se o valor estiver vazio, então ele irá imprimir uma mensagem de erro com o número da linha.

    $ awk ‘{ if ($3==””) print “Price field is missing in line” NR }’ items.txt

    Saída:

    if-else exemplo:

    O comando a seguir irá imprimir o preço do item, se o 3º campo existe na linha, caso contrário, ele irá imprimir uma mensagem de erro.

    $ awk ‘{ if ($3==””) print”Price field is missing “
    else print “item price is” $3 }’ items.,txt

    Saída:

    if-else-if exemplo:

    o seguinte comando irá executar a partir do terminal, em seguida, vai demorar a entrada do usuário. O valor de entrada será comparado com cada condição if até que a condição seja verdadeira. Se alguma condição se tornar verdadeira, então irá imprimir a nota correspondente. Se o valor de entrada não corresponder a nenhuma condição, então ele irá imprimir falhar.,

    $ awk ‘BEGIN { print “Digite a marca:”
    getline marca < “-“
    se (marca >= 90) print “A+”
    else if( marca >= 80) impressão “de Um”
    else if( marca >= 70) print “B+”
    else print “Falha” }’

    Resultado:

    Ir para o Conteúdo

    awk variáveis

    A declaração do awk variável é semelhante à declaração da variável shell. Há uma diferença na leitura do valor da variável., o símbolo ‘ $ ‘ é usado com o nome da variável shell para ler o valor. Mas não há necessidade de usar ‘ $ ‘ com a variável awk para ler o valor.

    usando uma variável simples:

    o seguinte comando irá declarar uma variável chamada ‘site’ e um valor de cadeia de caracteres é atribuído a essa variável. O valor da variável é impresso na declaração seguinte.

    $ awk ‘BEGIN{ site =” LinuxHint.,com”; print site} ‘

    Saída:

    usando uma variável para obter dados de um ficheiro

    o seguinte comando irá procurar a palavra ‘Impressora’ nos itens do ficheiro.txt. Se qualquer linha do arquivo começa com ‘impressora’, então ele armazenará o valor dos Campos 1st, 2nd E 3rd em três variáveis. as variáveis nome e preço serão impressas.

    $ awk ‘/ Printer / {name=$1;brand=$2;price=$3;print “item name=” name;
    print “item price=” price }’ items.,txt

    Saída:

    Go to Content

    awk arrays

    ambas as matrizes numéricas e associadas podem ser usadas no awk. Array variable declaration in awk is same to other programming languages. Alguns usos de arrays são mostrados nesta seção.

    Array associativo:

    o índice da array será qualquer cadeia para a array associativa. Neste exemplo, uma matriz associativa de três elementos são declarados e impressos.,

    saída:

    matriz numérica:

    uma matriz numérica de três elementos é declarada e impressa pela página de separação.

    saída:

    Go to Content

    awk loop

    três tipos de loops são suportados pelo awk. Os usos destes loops são mostrados aqui usando três exemplos.

    while loop:

    while loop that is used in the following command will iterate for 5 times and exit from the loop for break statement.,

    $ awk ‘BEGIN { n = 1; while (n <= 10) { if(n > 5) break; print n; n++ } }’

    Resultado:

    loop For:

    Para o ciclo que é utilizado o seguinte comando awk irá calcular a soma de 1 a 10 e imprimir o valor.,

    $ awk ‘BEGIN { soma=0; for (n = 1; n <= 10; n++) soma=soma+n; imprimir a soma }’

    Resultado:

    do-while:

    um do-while o comando a seguir irá imprimir todos os números pares de 10 para 5.,

    $ awk ‘BEGIN {contador = 10; do { if (contador%2 ==0) print contador; contador– }
    enquanto (contador > 5) }’

    Resultado:

    Ir para o Conteúdo

    o awk para imprimir a primeira coluna

    A primeira coluna de qualquer arquivo pode ser impresso usando $1 variável em awk. Mas se o valor da primeira coluna contém várias palavras então apenas a primeira palavra da primeira coluna imprime. Usando um delimitador específico, a primeira coluna pode ser impressa corretamente. Crie um arquivo de texto chamado estudantes.,txt com o seguinte conteúdo. Aqui, a primeira coluna contém o texto de duas palavras.estudantes.,txt

    Kaniz Fatema 30<sup>th</sup> batch
    Abir Hossain 35<sup>th</sup> batch
    John Abraham 40<sup>th</sup> batch

    Run awk command without any delimiter. The first part of the first column will be printed.,

    $ awk ‘{print $1}’ students.txt

    execute o comando awk com o seguinte delimitador. A parte integral da primeira coluna será impressa.

    $ awk-F ‘\\s\\s’ {print $1} ‘estudantes.txt

    Saída:

    Ir para o Conteúdo

    o awk para imprimir a última coluna

    $(NF) variável pode ser usada para imprimir a última coluna de qualquer arquivo. Os seguintes comandos awk irão imprimir a última parte e parte completa da última coluna dos alunos.ficheiro txt.,

    $ awk ‘{print $(NF)}’ students.txt
    $ awk-F ‘\\s\\s’ {print $(NF)} ‘estudantes.txt

    Saída:

    Ir para o Conteúdo

    awk com grep

    grep é uma outra forma útil de comando do Linux para pesquisar o conteúdo em um arquivo baseado em qualquer expressão regular. A forma como os comandos awk e grep podem ser usados em conjunto é mostrada no exemplo seguinte. o comando grep é usado para pesquisar informações do ID do empregado, ‘1002’ do empregado.ficheiro txt. O resultado do comando grep será enviado para awk como dados de entrada., 5% de bônus será contado e impresso com base no salário do ID do empregado, ‘1002’ pelo comando awk.

    $ cat empregado.txt
    $ grep ‘1002’ empregado.txt | awk -F ‘\t’ ‘{ print $2 ” terá $” ($3*5)/100 “bônus”}’

    Saída:

    Ir para o Conteúdo

    awk com o BASH arquivo

    Como outras de comando do Linux, awk comando também pode ser usado em um BASH script. Crie um arquivo de texto chamado clientes.txt com o seguinte conteúdo. Cada linha deste arquivo contém informações em quatro campos., Estes são o ID DO CLIENTE, nome, endereço e número de celular que são separados por ‘/’.clientes.txt

    crie um ficheiro bash chamado item_search.bash com o seguinte script. De acordo com este script, o valor de estado será retirado do Usuário e pesquisado nos clientes.ficheiro txt pelo comando grep e passou para o comando awk como entrada. O comando Awk vai ler o 2º e 4º campos de cada linha. Se o valor de entrada corresponder a qualquer valor de Estado dos clientes.txt file, em seguida, ele vai imprimir o nome do cliente e número de celular, caso contrário, ele vai imprimir a mensagem “Nenhum cliente encontrado”.,

    item_search.bash

    execute os seguintes comandos para mostrar as saídas.

    $ cat customers.txt
    $ bash item_search.bash

    Saída:

    Go to Content

    awk with sed

    outra ferramenta de pesquisa útil do Linux está ed. Este comando pode ser usado para procurar e substituir texto de qualquer arquivo. O exemplo seguinte mostra o uso do comando awk com o comando sed. Aqui, o comando sed irá procurar todos os nomes dos funcionários começam com’ J ‘ e passa para o comando awk como entrada., o awk irá imprimir o nome e o ID do empregado após a formatação.

    $ cat empregado.txt
    $ sed-n ‘/J/p’ empregado.txt | awk -F ‘\t’ ‘{ printf “%s(%s)\n”, $2, $1 }’

    Saída:

    Ir para o Conteúdo

    Conclusão:

    Você pode usar o awk comando para criar diferentes tipos de relatórios baseado em qualquer tabela ou delimitado de dados depois de filtrar os dados corretamente. Hope, você será capaz de aprender como o comando awk funciona depois de praticar os exemplos mostrados neste tutorial.

    Articles

    Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *