-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcheck.sh
More file actions
117 lines (98 loc) · 4.72 KB
/
check.sh
File metadata and controls
117 lines (98 loc) · 4.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/bash
# Poštovní schránky, test změn
# Očekává dva soubory POST_SCHRANKY_RRRRMM.csv, bez parametru načte první a poslední soubor POST_SCHRANKY_*.csv (podle jména) v adresáři
# vymazání starých souborů změn
rm Změny*.txt
echo
if [ $# -eq 0 ]
then
files=( POST_SCHRANKY_*.csv )
old=${files[${#files[@]}-2]}
#old=${files[0]}
new=${files[${#files[@]}-1]}
elif [ $# -eq 2 ]
then
files=( $(sort <(printf "%s\n" "$@")) )
old=${files[0]}
new=${files[${#files[@]}-1]}
if [ ! -e $old ]
then
echo "Soubor $old neexistuje"
exit 1
fi
if [ ! -e $new ]
then
echo "Soubor $new neexistuje"
exit 1
fi
else
echo "Očekávány 2 soubory POST_SCHRANKY_RRRRMM.csv nebo spuštění bez proměnných"
exit 1
fi
echo "Změny u depa pošty:"
echo "--------------------------------------"
diff -u <(awk -F";" '!seen[$1";"$2]++ { print $1";"$2}' $old | sort -V) <(awk -F";" '!seen[$1";"$2]++ { print $1";"$2}' $new | sort -V) | \grep "^+\|^-"| sed 's/./& /;2d;1d' | tee Změny_depa.txt | tr ';' '\t'
if (( $(< "Změny_depa.txt" wc -l) > 0 ))
then
echo "--------------------------------------"
wc -l Změny_depa.txt || echo "Beze změny mezi depy"
echo "======================================"
sed -i -e '1iZměny u depa pošty mezi '$old' a '$new'\' Změny_depa.txt
else
echo "Beze změny mezi depy"
echo "======================================"
rm Změny_depa.txt
fi
echo
diff -u <(awk -F";" '!seen[$1";"$3]++ { print $1":"$3}' $old | sort -V) <(awk -F";" '!seen[$1";"$3]++ { print $1":"$3}' $new | sort -V) | \grep "^-\|^+" | sed 's/./& /;1,2d' | awk -F' ' '{print $2 > "Změny_ref_" ($1=="+" ? "přírůstky.txt" : "úbytky.txt")}'
echo "Změna ref schránky (přírůstky/úbytky):"
echo "--------------------------------------"
wc -l Změny_ref_přírůstky.txt || echo "Beze přírůstků"
wc -l Změny_ref_úbytky.txt || echo "Beze úbytků"
echo "======================================"
sed -i -e '1iMezi '$old' a '$new' přibyly schránky s ref:\' Změny_ref_přírůstky.txt
sed -i -e '1iMezi '$old' a '$new' ubyly schránky s ref:\' Změny_ref_úbytky.txt
echo
echo "...slučuji dobu výběru..."
echo
sed '1cpsc;zkrnaz_posty;cis_schranky;adresa;sour_x;sour_y;misto_popis;cast_obce;obec;okres;cas;omezeni - omezeni' $old | ./collection_times.sh | sed 's/ @/;/' > tmp_old_CT.csv
sed '1cpsc;zkrnaz_posty;cis_schranky;adresa;sour_x;sour_y;misto_popis;cast_obce;obec;okres;cas;omezeni - omezeni' $new | ./collection_times.sh | sed 's/ @/;/' > tmp_new_CT.csv
join -t";" -j 1 <(awk -F";" '{ print $1":"$3";"$11}' tmp_old_CT.csv | sort ) <(awk -F";" '{ print $1":"$3";"$11}' tmp_new_CT.csv | sort) | awk -F";" '$2!=$3' |
./sort.awk | sed 's/\([-;"]\)1\b/\1Mo/g;s/\([-;"]\)2\b/\1Tu/g;s/\([-;"]\)3\b/\1We/g;s/\([-;"]\)4\b/\1Th/g;s/\([-;"]\)5\b/\1Fr/g;s/\([-;"]\)6\b/\1Sa/g;s/\([-;"]\)7\b/\1Su/g;s/;@/;/g;s/;\";/;\"/g' > Změny_doba_výběru.txt
#TODO: parse collection_times
echo "Změna doby výběru schránky:"
echo "--------------------------------------"
wc -l Změny_doba_výběru.txt || echo "Beze změny"
echo "======================================"
echo
sed -i -e '1iRef;'$old';'$new'\' Změny_doba_výběru.txt
# kontrola změny ref (přesuny mezi depy)
# sloučení podle sl. 4-10, hodnoty sl.1-3
# (sloučit čísla schránek < existuje více schránek na jedné adrese)
echo ...kontrola podle adresy...
echo
paste <(cut -d';' -f 4-10 tmp_old_CT.csv) <(cut -d';' -f 1-3 tmp_old_CT.csv) | awk -F$'\t' '{if(a[$1])a[$1]=a[$1]"|"$2; else a[$1]=$2;}END{for (i in a)print i, a[i];}' OFS="\t" | iconv -f cp1250 -t utf8 | sort > tmp_old_txt.txt
paste <(cut -d';' -f 4-10 tmp_new_CT.csv) <(cut -d';' -f 1-3 tmp_new_CT.csv) | awk -F$'\t' '{if(a[$1])a[$1]=a[$1]"|"$2; else a[$1]=$2;}END{for (i in a)print i, a[i];}' OFS="\t" | iconv -f cp1250 -t utf8 |sort > tmp_new_txt.txt
# nalezení rozdílů
join -t$'\t' -j 1 tmp_old_txt.txt tmp_new_txt.txt | awk -F$'\t' '$2!=$3 { print $2" > "$3 }' | sed 's/;[^;]*;/:/g' > Změny_změněná_ref.txt
echo "Změna ref schránky:"
echo "--------------------------------------"
wc -l Změny_změněná_ref.txt || echo "Beze změny"
echo "======================================"
echo
sed -i -e '1iRef '$old' > Ref '$new'\' Změny_změněná_ref.txt
# TODO: ungroup ref
# pokud byly čísla schránek sloučené a nalezen rozdíl, pokusit se rozdělit zpět a vyloučit totožné
# závěrečná informace a vymazání dočasných souborů
echo
echo "**************************************"
echo "Porovnávané soubory:"
echo "**************************************"
echo "OLD...$old"
echo "NEW...$new"
echo "**************************************"
echo "Změny byly uloženy v souborech:"
echo "**************************************"
ls -w1 Změny*.txt
echo "**************************************"
rm tmp_*.*