Validar CPFs dentro de arquivos JSON manualmente é uma tarefa demorada e propensa a erros. Com o jq e um script Bash, você automatiza esse processo diretamente no terminal Linux, garantindo precisão e rapidez.
Primeiro, crie um script Bash que contenha a função de validação do CPF. Esse script receberá o CPF como argumento e retornará "true" ou "false".
#!/bin/bash
function valida_cpf() {
local cpf=$1
cpf=$(echo "$cpf" | tr -d '^[0-9]')
if [[ ${#cpf} -ne 11 || "$cpf" =~ ^(0{11}|1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11})$ ]]; then
echo "false"
return
fi
local digito1=$(echo "$cpf" | cut -c1-9 | awk '{ sum=0; for(i=1;i<=9;i++) sum+=substr($0,i,1)*(11-i); if((sum*10%11%10)==substr($0,10,1)) print "true"; else print "false"; }')
local digito2=$(echo "$cpf" | cut -c1-10 | awk '{ sum=0; for(i=1;i<=10;i++) sum+=substr($0,i,1)*(12-i); if((sum*10%11%10)==substr($0,11,1)) print "true"; else print "false"; }')
if [[ "$digito1" == "true" && "$digito2" == "true" ]]; then
echo "true"
else
echo "false"
fi
}
valida_cpf "$1"
Use o jq para iterar sobre cada CPF no arquivo JSON, chamando o script Bash para validação. O resultado será um novo JSON com o campo "valido" adicionado.
jq -c '.[] | .valido=([env.CPF] | @sh | xargs -I {} bash valida_cpf.sh "{}")' --argfile data input.json
Considere o seguinte arquivo JSON de entrada:
[
{"nome": "João", "cpf": "12345678909"},
{"nome": "Maria", "cpf": "11144477735"},
{"nome": "Pedro", "cpf": "00000000000"}
]
Após processar com o script e jq, o JSON de saída será:
| nome | cpf | valido |
|---|---|---|
| João | 12345678909 | false |
| Maria | 11144477735 | true |
| Pedro | 00000000000 | false |
Com este método, você automatiza a validação de CPFs em arquivos JSON diretamente no terminal Linux, eliminando erros manuais e economizando tempo valioso em tarefas repetitivas.