Processamento de Linguagens (LEI - 3ºano)
Este ficha prática contem exercícios para serem resolvidos nas aulas teórico-práticas com vista a sedimentar os conhecimentos relativos a:
Recursos: |
|
Recursos disponíveis para a realização da ficha:
|
|
Exercícios: |
|
Invoque o comando egrep:
egrep PADRAO pltesteER.txtprimeiro, para ver o resultado de usar os padrões descritos pelas ER seguintes:
"pedro" "[Pp]edro" "[Pp]edro|[Dd][Aa]niela" "[Pp]edro|[Dd][Aa][a-zA-Z]+" "[Pp]edro|[Dd][Aa][a-zA-Z]*" "[Dd][Aa]?[a-zA-Z]*"e depois, para procurar em "pltesteER.txt":
Para introduzir a ferramenta AWK (sistema baseado num conjunto de regras 'Condição-Ação'), uma linguagem de programação para deteção de padrões e processamento de texto, mais o respetivo interpretador - criado em 1977 pelos cientistas Alfred Aho, Peter J. Weinberger e Brian Kernighan no Bell Labs - execute os comandos abaixo e analise com cuidado o seu resultado:
gawk '{ print $1 }' utilizadores.txt gawk '{ print $1 }' pltesteER.txt gawk '{ print $2 }' pltesteER.txt gawk -F: '{ print $1 }' utilizadores.txt gawk -F: '{ print $3 }' utilizadores.txt gawk -F: '$1=="prh" { print $1 "->" $6 }' utilizadores.txt gawk -F: '$1=="prh"||$1=="jcr" { print }' utilizadores.txte depois disso execute repetidamente o comando:
gawk -f FILE.gawk utilizadores.txtem que FILE vai sendo 'expusers1' e 'expusers2', observando com cuidado o resultado produzido em cada caso, sendo:
expusers1.gawk BEGIN { FS=":"; conta=0 } NR==1 { print "A processar o ficheiro: " FILENAME } NR>=1 && NR<=10 { print $1 } { conta+=NF } END { print conta " - " NR } expusers2.gawk BEGIN { FS=":"; conta=0 } /rita/ { conta++; print $1 " -> " $6 } /prh|jcr/ { conta++; print $1 " -> " $6 } /uucp/,/rpm/ { conta++; print } /x.*sbin/ && $3>40 { conta++; print "Em sbin: " $0 } $1 ~ "nuno" { conta++; print $1 " = " $NF } END { print conta " - " NR " = " conta/NR }</codigo>
Com base nos exemplos anteriores, escreva um ficheiro 'exppltesteER.gawk' para processar o ficheiro de texto 'pltesteER.txt' conforme os requisitos solicitados nas alíneas seguintes:
Faça um exercício semelhante ao anterior, construindo agora um ficheiro 'expinscr.gawk' para processar o texto 'inscritos.txt' conforme solicitado nas alíneas seguintes:
Neste exercício vais calcular algumas frequências de alguns elementos, a ideia é utilisares arrays associativos para o efeito.
Especifica scripts em awk para responder às seguintes questões: