View difference between Paste ID: HVn8WRCw and DkxY6a73
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+