awk Flashcards
Imprima todas as linhas do arquivo file.txt
awk ‘{ print }’ file.txt
Imprima o texto ‘olá’ para cada linha do arquivo file.txt
awk ‘{ print “olá”}’ file.txt
Imprima o nome de todos os usuários no arquivo /etc/passwd
awk -F’:’ ‘{ print $1 }’ /etc/passwd
Imprima o label ‘username: ‘, o nome, duas tabulações, o label ‘uid: ‘ e o uid de todos os usuários no arquivo /etc/passwd
awk -F’:’ “{ print username: $1 ‘\t\tuid:’ $3 }” /etc/passwd
execute o awk chamando um script awk com nome myscript
awk -f myscript.awk file
Shebang do awk
!/usr/bin/awk -f
Tag que inicia um script awk
BEGIN
Um script awk que imprima o nome de todos os usuários no arquivo /etc/passwd
#!/usr/bin/awk -f BEGIN { FS=":" } { print $1 }
o que é a constante FS?
Field Separator - o caractere de separação dos campos
Por que se usa o BEGIN?
Para dizer que o script awk irá começar a partir deste bloco para cada input fornecido
O que é o bloco END?
Um bloco no final do processamento para finalizar o script
selecione somente as linhas que contenha php e imprima
/php/ { print }
variavel que guarda os caracteres de divisão de campos na linha
FS
variavel que guarda o numero de campos na linha
NF
variavel que guarda o numero da linha corrente
NR
Como fazer para que seja exibido os dados de cada pessoa em uma única linha?
Jimmy the Weasel
100 Pleasant Drive
San Francisco, CA 12345
Big Tony
200 Incognito Ave.
Suburbia, WA 67890
BEGIN { FS="\n" RS="" } { print $1 ", " $2 ", " $3 }
Variavel que guarda os caracteres que definem o final de uma linha, quando mais de uma linha deve ser representada como uma
RS
Variavel que guarda os caracteres de divisão de campo que são chamados como ‘,’
OFS
Variavel que guarda os caracteres de divisão de toda uma linha
ORS
Como fazer para que seja exibido os dados de cada pessoa em uma única linha. Independente da quantidade de linhas de cada registro.
Jimmy the Weasel
100 Pleasant Drive
San Francisco, CA 12345
Big Tony
200 Incognito Ave.
Suburbia, WA 67890
BEGIN { FS='\n' RS='' ORS='' } { x=1 while( x < NF ) { print $x '\t' x++ } print $NF '\n' }