msoliver
(usa Debian)
Enviado em 08/09/2020 - 18:18h
alex_tj escreveu:
Galera, bom dia,
Estou com uma dúvida.
Tenho um arquivo TESTE.TXT com as seguintes informações:
LOGIN|DOMINIO
FULANO_1|DM-1234
FULANO_2|DM-003
FULANO_3|AB-1456
FULANO_4|DNO-1234
FULANO_5|AVB-78945
FULANO_6|DM-12345
FULANO_7|DM-CSS
FULANO_8|WE-789
FULANO_9|DM-CCS
FULANO_10|DM-_1456
E preciso retornar tudo o que é diferente desses 2 padrões: DM-CCS e DM-[0-9]{4}
Ou seja ou ele tem que ser exatamente igual a DM-CCS ou ele precisa ser composto por DM-(e exatamente 4 dígitos númericos)
Faço a seguinte expressão regular para validar isso:
awk -F'|' '{gsub("\"","", $2); gsub(" ","", $2); printf "%s-%s\n" ,NR,$2 "-" $1}' TESTE.TXT | egrep -v 'DM-CCS' | egrep -v '[DM]{2}[-][0-9]{4}' | awk -F'-' '{printf "%s-%s\n", $2,$3}'
Porém, o valor FULANO_6|DM-12345 está sendo tratado como correto, mas não deveria pq são 5 posições numéricas ao invés de apenas 4.
Quem puder ajudar desde já agradeço demais.
Vlw!!!
Boa tarde Alex:
Segundo a sua especificação 01:
E preciso retornar tudo o que é diferente desses 2 padrões: DM-CCS e DM-[0-9]{4}
gawk -F"|" 'NR>1 && $2!~/^DM-(CSS|[0-9]{4})$/ {print $2,"["length($2)"]"}' texto.txt
Ou
sed -nr '/\|DM-(CCS|[0-9]{4})$/!p' texto.txt
especificação 02:
Tem que ser exatamente igual a DM-CCS ou ele precisa ser composto por DM-(e exatamente 4 dígitos numéricos)
gawk -F"|" '$2~/^DM-(CSS|[0-9]{4})$/ {print $1,$2,"["length($2)"]"}' texto.txt |column -t
Ou
sed -nr '/\|DM-(CCS|[0-9]{4})$/p' texto.txt
Nota: O Número entre [], é o tamanho do campo 02.
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________