Advertisement
darsinqauros

Comparar resgistros

Mar 5th, 2012
52
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. convUtf="/tmp/convUtf.txt"
  4. padraoUnix="/tmp/padraoUnix.txt"
  5. usadoUnix="/tmp/usadoUnix.txt"
  6. resultado="/home/$USER/diferenca.txt"
  7.  
  8. # Remove os Carriage Returns usado pelo windows.
  9. iconv --from-code=utf-16le --to-code=UTF-8 "$1" -o $convUtf
  10. tr -d \\r < $convUtf > $padraoUnix
  11. #tr -d \\r < $1 > $padraoUnix
  12. rm $convUtf
  13. iconv --from-code=utf-16le --to-code=UTF-8 "$2" -o $convUtf
  14. tr -d \\r < $convUtf > $usadoUnix
  15. #tr -d \\r < $2 > $usadoUnix
  16. rm $convUtf
  17.  
  18. # Retira as linhas em branco repetidas para reduzir o tamanho
  19. # final do arquivo.
  20. sed -i "/^$/d" $padraoUnix
  21. sed -i "/^$/d" $usadoUnix
  22.  
  23. declare -A registroPadrao=()
  24. while read linhaPadrao; do
  25.     if [ "${linhaPadrao:0:1}" == "[" ]; then
  26.         chavePadrao=${linhaPadrao#[}
  27.         chavePadrao=${chavePadrao%]}
  28.         chavePadrao=${chavePadrao//\\/.BARRA.}
  29.         registroPadrao+=([$chavePadrao]="")
  30.     else
  31.         registroPadrao["$chavePadrao"]+="$linhaPadrao#;#"
  32.     fi
  33. done < $padraoUnix
  34.  
  35. declare -A registroUsado=()
  36. while read linhaUsada; do
  37.     if [ "${linhaUsada:0:1}" == "[" ]; then
  38.         chaveUsada=${linhaUsada#[}
  39.         chaveUsada=${chaveUsada%]}
  40.         chaveUsada=${chaveUsada//\\/.BARRA.}
  41.         registroUsado+=([$chaveUsada]="")
  42.     else
  43.         registroUsado[$chaveUsada]+="$linhaUsada#;#"
  44.     fi
  45. done < $usadoUnix
  46.  
  47. for chave in "${!registroUsado[@]}"; do
  48.     if [ -n "${registroPadrao[$chave]}" ]; then
  49.         echo "$chave#;#${registroUsado[$chave]}" >> $resultado
  50.     else
  51.         if [ "${registroUsado[$chave]}" != "${registroPadrao[$chave]}" ]; then
  52.             echo "$chave#;#${registroUsado[$chave]}" >> $resultado
  53.         fi
  54.     fi
  55. done
  56.  
  57. exit
Advertisement
RAW Paste Data Copied
Advertisement