Bernardes02
(usa Linux Mint)
Enviado em 19/06/2018 - 15:16h
Boa noite, veja se é o que precisa.
awk -F '[;|@]' '{print $7,$8,$9,$10,$11,$12}' texto
2131231 123123 231231 23123 123123 SDASDADA
2131231 123123 231231 23123 123123 VCBCVXXCV
2131231 123123A 231231 23123 123123 ERTEYRTYE
Marcelo Oliver
Boa Tarde Marcelo,
FIcou muito Bom, fiz alguns teste o resultado foi satisfatorio.
Criei quatros arquivos com o mesmo layout porem na quinta coluna do sexto campo adicionei um caractere diferente do númerico e tentei realizar uma lista negada a partir do que me ensinou:
cat texto03.txt
AAAA;asad;asdasdasd;asdasdad;asdasdasdasd;2312312|2131231|123123@231231|23123|123123;SDASDADA
AAAA;rwerwer;jkhjk;hjkjhkhj;weqweqw;2312312|2131231|123123@231231|23123|123123;VCBCVXXCV
AAAA;fgdfg;dfvcx;tyrtyrt;bnmbnmgh;
2312312|2131231|123123A @231231|23123|123123;ERTEYRTYE
cat texto02.txt
AAAA;asad;asdasdasd;asdasdad;asdasdasdasd;2312312|2131231|123123@231231|23123|123123;SDASDADA
AAAA;rwerwer;jkhjk;hjkjhkhj;weqweqw;2312312|2131231|123123@231231|23123|123123;VCBCVXXCV
AAAA;fgdfg;dfvcx;tyrtyrt;bnmbnmgh;
2312312|2131231|123123A @231231|23123|123123;ERTEYRTYE
cat texto01.txt
AAAA;asad;asdasdasd;asdasdad;asdasdasdasd;2312312|2131231|123123@231231|23123|123123;SDASDADA
AAAA;rwerwer;jkhjk;hjkjhkhj;weqweqw;2312312|2131231|123123@231231|23123|123123;VCBCVXXCV
AAAA;fgdfg;dfvcx;tyrtyrt;bnmbnmgh;2312312|2131231|123123@231231|23123|123123;ERTEYRTYE
cat texto00.txt
AAAA;asad;asdasdasd;asdasdad;asdasdasdasd;2312312|2131231|123123@231231|23123|123123;SDASDADA
AAAA;rwerwer;jkhjk;hjkjhkhj;weqweqw;2312312|2131231|123123@231231|23123|123123;VCBCVXXCV
AAAA;fgdfg;dfvcx;tyrtyrt;bnmbnmgh;2312312|2131231|123123@231231|23123|123123;ERTEYRTYE
Segue o comando feito:
for arq in texto*.txt
do
count_arq=""
count_arq=`cat $arq | awk -F"[;|@]" '{if ($8 ~ /[^0-9]/) print $0}'`
test -n $count_arq 2>>/dev/null
if [ $? -eq 0 ]
then
echo "$arq $count_arq"
fi
done
SAIDA:
texto00.txt
texto01.txt
texto02.txt AAAA;fgdfg;dfvcx;tyrtyrt;bnmbnmgh;2312312|2131231|
123123A @231231|23123|123123;ERTEYRTYE
texto03.txt AAAA;fgdfg;dfvcx;tyrtyrt;bnmbnmgh;2312312|2131231|
123123A @231231|23123|123123;ERTEYRTYE
Ele me retornou somente as linhas que continham caracteres alfanumeros no quinto campo da sexta coluna.
Ai queria saber, com o awk tem como realizar uma validação deste tipo ?
Exemplo:
O arquivo tem linhas onde as colunas são ";" e como no caso acima a sexta coluna contem uma informação delimitada por outro delimitadores como contem informações de tres colunas dividas por pipes e pode ocorre de haver mais informações que sao divididas por "@" , exemplo :
cat texto01.txt | awk -F";" '{print $(NF-1)}'
2312312|2131231|123123
2312312|2131231|123123@231231|23123|123123
2312312|2131231|123123@231231|23123|123123
Não sei se tem como de um comando varrer o penúltimo campo(6º campo) e validar de forma diferenciada as informações dividas por pipe e @, tipo que validar todas terceira coluna deste sexto campo, conforme destacado abaixo:
cat texto01.txt | awk -F";" '{print $(NF-1)}'
2312312|2131231|
123123
2312312|2131231|
123123 @231231|23123|
123123
2312312|2131231|
123123 @231231|23123|
123123