SHOW:
|
|
- or go back to the newest paste.
1 | #!/bin/bash | |
2 | ||
3 | - | convUtf="/tmp/convUtf.txt" |
3 | + | |
4 | usadoUnix="/tmp/usadoUnix.txt" | |
5 | resultado="/home/$USER/diferenca.txt" | |
6 | ||
7 | # Converte a codificação do arquivo | |
8 | - | # Remove os Carriage Returns usado pelo windows. |
8 | + | iconv --from-code=utf-16le --to-code=UTF-8 "$1" -o $padraoUnix |
9 | - | iconv --from-code=utf-16le --to-code=UTF-8 "$1" -o $convUtf |
9 | + | iconv --from-code=utf-16le --to-code=UTF-8 "$2" -o $usadoUnix |
10 | - | tr -d \\r < $convUtf > $padraoUnix |
10 | + | |
11 | # Remove os Carriage-Returns usado pelo windows. | |
12 | - | rm $convUtf |
12 | + | sed -i "s/\r//g" $padraoUnix |
13 | - | iconv --from-code=utf-16le --to-code=UTF-8 "$2" -o $convUtf |
13 | + | |
14 | - | tr -d \\r < $convUtf > $usadoUnix |
14 | + | |
15 | sed -i "s/\r//g" $usadoUnix | |
16 | - | rm $convUtf |
16 | + | |
17 | ||
18 | - | # Retira as linhas em branco repetidas para reduzir o tamanho |
18 | + | # Remove a linha problemática dos dois arquivos. |
19 | - | # final do arquivo. |
19 | + | sed -i "/Windows Registry Editor Version 5\.00/d" $padraoUnix |
20 | sed -i "/Windows Registry Editor Version 5\.00/d" $usadoUnix | |
21 | ||
22 | # Retira as linhas em branco repetidas para reduzir o tamanho final do arquivo. | |
23 | - | declare -A registroPadrao=() |
23 | + | |
24 | - | while read linhaPadrao; do |
24 | + | |
25 | - | if [ "${linhaPadrao:0:1}" == "[" ]; then |
25 | + | |
26 | - | chavePadrao=${linhaPadrao#[} |
26 | + | # Agrupa um registro com seus atributos em uma |
27 | - | chavePadrao=${chavePadrao%]} |
27 | + | # única linha. |
28 | - | chavePadrao=${chavePadrao//\\/.BARRA.} |
28 | + | sed -i "s/^\[/\}\n\[/g" $padraoUnix |
29 | - | registroPadrao+=([$chavePadrao]="") |
29 | + | sed -i "1d" $padraoUnix |
30 | - | else |
30 | + | echo "}" >> $padraoUnix |
31 | - | registroPadrao["$chavePadrao"]+="$linhaPadrao#;#" |
31 | + | sed -ni '/\[/{:inicio;/}/!{N;binicio};s/\n/##;/g;s/}$//g;p}' $padraoUnix |
32 | - | fi |
32 | + | |
33 | - | done < $padraoUnix |
33 | + | sed -i "s/^\[/\}\n\[/g" $usadoUnix |
34 | sed -i "1d" $usadoUnix | |
35 | - | declare -A registroUsado=() |
35 | + | echo "}" >> $usadoUnix |
36 | - | while read linhaUsada; do |
36 | + | sed -ni '/\[/{:inicio;/}/!{N;binicio};s/\n/##;/g;s/}$//g;p}' $usadoUnix |
37 | - | if [ "${linhaUsada:0:1}" == "[" ]; then |
37 | + | |
38 | - | chaveUsada=${linhaUsada#[} |
38 | + | # Realiza a comparação entre os arquivos e salva o resultado em "/home/$USER/diferenca.txt" |
39 | - | chaveUsada=${chaveUsada%]} |
39 | + | diff --changed-group-format='%>' --unchanged-group-format='' $padraoUnix $usadoUnix > $resultado |
40 | - | chaveUsada=${chaveUsada//\\/.BARRA.} |
40 | + | |
41 | - | registroUsado+=([$chaveUsada]="") |
41 | + | rm $padraoUnix |
42 | - | else |
42 | + | rm $usadoUnix |
43 | - | registroUsado[$chaveUsada]+="$linhaUsada#;#" |
43 | + | |
44 | - | fi |
44 | + |