Awk is a scripting language used for manipulating data and generating reports.A linguagem de programação de comandos awk não requer compilação, e permite ao usuário usar variáveis, funções numéricas, funções de cadeia de caracteres e operadores lógicos.

Awk é um utilitário que permite a um programador escrever programas minúsculos mas eficazes na forma de declarações que definem padrões de texto que devem ser pesquisados em cada linha de um documento e a ação que deve ser tomada quando uma correspondência é encontrada dentro de uma linha., Awk é usado principalmente para digitalização e processamento de padrões. Ele procura um ou mais arquivos para ver se eles contêm linhas que correspondem com os padrões especificados e, em seguida, executa as ações associadas.

Awk é abreviado dos nomes dos desenvolvedores-Aho, Weinberger e Kernighan. o que podemos fazer com o AWK ? 1. AWK Operations:
(a) Scans a file line by line
(b) Splits each input line into fields
(c) Compares input line/fields to pattern
(d) Performs action(s) on matched lines

2., Útil para:
(a) transformar arquivos de dados
(b) produzir relatórios formatados

3. Construções de programação:
(a) o Formato de saída de linha
(b) operações Aritméticas e operações de cadeia de caracteres
(c) Condicionais e loops

Sintaxe:

awk options 'selection _criteria {action }' input-file > output-file

Opções:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument.-F fs : Use fs for the input field separator

Exemplo de Comandos

Exemplo:
Considere o seguinte arquivo de texto como o arquivo de entrada para todos os casos abaixo.

$cat > employee.txt 
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

1. Comportamento por omissão do Awk: por omissão, o Awk imprime todas as linhas de dados do ficheiro indicado.,

$ awk '{print}' employee.txt

Saída:

ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

No exemplo acima, nenhum padrão é dado. Assim, as ações são aplicáveis a todas as linhas. Action print without any argument prints the whole line by default, so it prints all the lines of the file without failure. 2. Imprime as linhas que correspondem ao padrão indicado.

$ awk '/manager/ {print}' employee.txt 

Saída:

ajay manager account 45000varun manager sales 50000amit manager account 47000 

No exemplo acima, o comando awk imprime toda a linha que coincide com o ‘gestor de’. 3., Dividindo uma linha em campos : para cada linha de gravação i. e., o comando awk divide o registo delimitado pelo carácter de espaço em branco por omissão e guarda-o nas variáveis $n. Se a linha tiver 4 palavras, ela será armazenada em $1, $2, $3 e $4, respectivamente. Além disso, 0 dólares representa toda a linha.

$ awk '{print $1,$4}' employee.txt 

Saída:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

No exemplo acima, $1 e $4 representa o Nome e o Salário de campos, respectivamente.,

Construído Em Variáveis Em Awk

Awk variáveis internas incluem as variáveis de campo—$1, $2, $3, e assim por diante ($0 é a linha inteira) — que quebrar uma linha de texto em palavras individuais ou peças chamadas de campos.

NR: o comando NR mantém uma contagem actual do número de registos de entrada. Lembra-te que os registos são normalmente linhas. O comando Awk executa as declarações de padrão / Acção uma vez para cada registo num ficheiro.

NF: o comando NF mantém uma contagem do número de Campos dentro do registo de entrada actual.,

FS: o comando FS contém o Carácter separador de campos que é usado para dividir os campos na linha de entrada. O padrão é “espaço branco”, significando espaço e caracteres de tabulação. FS pode ser transferido para outro personagem (tipicamente no início) para mudar o separador de campo.

RS: o comando RS guarda o carácter actual do separador de registos. Uma vez que, por padrão, uma linha de entrada é o registro de entrada, o caractere padrão separador de registro é uma nova linha.

OFS: o comando OFS guarda o separador do campo de saída, que separa os campos quando o Awk os imprime. O padrão é um espaço em branco., Sempre que a impressão tem vários parâmetros separados por vírgulas, irá imprimir o valor de OFS entre cada parâmetro.

ORS: o comando ORS guarda o separador de registos de saída, que separa as linhas de saída quando o Awk as imprime. O padrão é um personagem newline. imprime automaticamente o conteúdo de ORS no final de qualquer que seja dado para imprimir.,

Exemplos:

o Uso da NR variáveis internas (Exibe o Número da Linha)

$ awk '{print NR,$0}' employee.txt 

Saída:

1 ajay manager account 450002 sunil clerk account 250003 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 230007 sunil peon sales 130008 satvik director purchase 80000 

No exemplo acima, o comando awk com NR imprime todas as linhas, juntamente com o número da linha.

o Uso de NF variáveis internas (Apresentar Último Campo)

$ awk '{print $1,$NF}' employee.txt 

Saída:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

No exemplo acima de us $1 representa o Nome e $NF representa o Salário. Podemos obter o salário usando $ NF, onde $NF representa o último campo.,

Outro uso da NR variáveis internas (Linha de Exibição De 3 a 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt 

Saída:

3 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 23000 

Mais Exemplos

Para o arquivo de texto:

$cat > geeksforgeeks.txtA B CTarun A12 1Man B6 2Praveen M42 3

1) Para imprimir o primeiro item, juntamente com o número da linha(NR) separados por ” – ” a partir de cada linha em geeksforgeeks.txt:

$ awk '{print NR "- " $1 }' geeksforgeeks.txt
1 - Tarun2 – Manav 3 - Praveen

2) Para retornar a segunda linha/item geeksforgeeks.,est linha presente no arquivo:

$ awk '{ if (length($0) > max) max = length($0) } END { print max }' geeksforgeeks.txt
13

5) Para contar as linhas de um arquivo:

$ awk 'END { print NR }' geeksforgeeks.txt
3

6) linhas de Impressão, com mais de 10 personagens:

$ awk 'length($0) > 10' geeksforgeeks.txt
Tarun A12 1Praveen M42 3

7) encontrar/de seleção para qualquer seqüência de caracteres de qualquer coluna específica:

$ awk '{ if($3 == "B6") print $0;}' geeksforgeeks.txt

8) Para imprimir os quadrados dos primeiros números de 1 a n, digamos 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print "square of", i, "is",i*i; }'
square of 1 is 1square of 2 is 4square of 3 is 9square of 4 is 16square of 5 is 25square of 6 is 36

Este artigo é uma contribuição de Anshika Goyal e Praveen Negi., Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou e-mail o seu artigo para [email protected]. Ver seu artigo publicado no GeeksforGeeks página principal e ajudar outros Geeks.

Articles

Deixe uma resposta

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