sábado, 19 de novembro de 2016

awk

os comandos em awk são separados por '{}', cada comando fica dentro deles, as condições ficam dentro de () tipo if --> {if () ; print }

echo "NF SEPARA OS ELEMENTOS DA LINHA UMA A UM" | awk '{ for (i = 1; i <= NF; ++i) { print i, $(i); } }'

OFS="\t" --> faz o separador padrão de saída ser tab, daí nao precisa usar printf "%f\t %f" , x,y

BEGIN é usado para executar algo para o inicio do arquivo antes dos comandos
END é usado para executar algo no fim do arquivo
FNR  armazena o elemento lido
RS Record separator, padrão é nova linha


sendo o arquivo awteste.txt contendo:

100 200
200 100
300 300
500 120
333 222

Adicionar a string "X" e "Y" no inicio do arquivo:

cat awteste.txt | awk 'BEGIN{OFS="\t"; print "X", "Y" }{print }'

resulta:

X Y
100 200
200 100
300 300
500 120
333 222

cat awteste.txt | awk 'BEGIN{OFS="\t"; print "X", "Y" } END {OFS="\t"; print "FINAL","ARQUIVO"} {print } ' 

X Y
100 200
200 100
300 300
500 120
333 222
FINAL ARQUIVO

Quando o arquivo está formatado em colunas é muito mais fácil trabalhar, cada coluna fica representada por "$", tipo coluna 1 e 2 são $1 e $2 respectivamente

tendo um arquivo awlinhas.txt., contendo:


primeira linha conjunto um
segunda linha conjunto um
terceira linha também do conjunto um
PULA
primeira linha conjunto dois
segunda linha conjunto dois
terceira linha também do conjunto dois


cat awlinhas.txt | awk 'BEGIN{FS="\n"; RS="PULA\n"} {print $1 ", " $2 ", " $3 }'

primeira linha conjunto um, segunda linha conjunto um, terceira linha também do conjunto um

primeira linha conjunto dois, segunda linha conjunto dois, terceira linha também do conjunto dois


Excluir uma linha contendo uma palavra:

awk '!/pattern/'






Nenhum comentário: