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
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
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.
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.
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
+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.
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
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.,
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 | 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.
$ 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.
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 ().
BEGIN {FS =”,”} {printf “% 5s (%s)\n”, $2,$1}
correr constrangimento.ficheiro awk com o conteúdo do cliente.ficheiro csv pelo seguinte comando.
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.
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.
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.,
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.,
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.
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.,
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.
$ 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””}
execute o programa pelo seguinte comando.
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:
Execute o seguinte comando para instalar o basbaque do pacote para a utilização de getsub() função com o comando awk.
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
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.,
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.
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.
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
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.
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.
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.,
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.
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.
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.,
Resultado:
loop For:
Para o ciclo que é utilizado o seguinte comando awk irá calcular a soma de 1 a 10 e imprimir o valor.,
Resultado:
do-while:
um do-while o comando a seguir irá imprimir todos os números pares de 10 para 5.,
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
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.,
execute o comando awk com o seguinte delimitador. A parte integral da primeira coluna será impressa.
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-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.
$ 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.
$ 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.
$ 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.