(mir hilfts)
|
Quellcode
|
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
|
#!/bin/bash
# 08.06.2018 difd
# Dieses Script (ich nenne es jetzt difd) ist zur freien Verfügung, aber (natürlich) ohne jedliche Gewährung also Garantie -
# egal welchen Schaden es auslösen könnte - eben typisch open source
#
# Zweck des Scripts ist es, die Ausgabe (von diff) etwas zu ordnen
# Aufgerufen wird es genauso wie diff (gemeint ist hier diff ohne Optionen)
# Man kann es bei sich z.B. in /usr/local/bin kopieren, ändern ... (wer benutzt schon vim ?!? ...)
# Auch den Text in "$zwi6" (s.u.) kann man anpassen - z.B. ins Englische Französische ... übertragen
# Auch Anregungen Rückmeldungen sind (natürlich) möglich.
# z.B. könnte man zu Beginn abfragen, ob diff.out | "$1" | "$2" existieren oder "$#" != 2 (und dann gegebenenfalls. abbrechen)
#
zwi1=`mktemp --suffix=.txt`;
zwi2=`mktemp --suffix=.txt`;
zwi3=`mktemp --suffix=.txt`;
zwi4=`mktemp --suffix=.txt`;
zwi5=`mktemp --suffix=.txt`;
zwi6=`mktemp --suffix=.txt`;
t='------------------------------------------------------------------------------------------------------'
{ echo -e "zwi1=$zwi1\n ";time nice -19 diff -qrs "$1" "$2"; echo -e "\nRC von diff -qrs : $?\n\n$t "; } 2>&1 | tee "$zwi1" 2>&1 ;
#
# das Wesentliche ist jetzt schon gemacht (nämlich von diff).
# Was folgt, ist nur aufarbeiten,ordnen,umorganisieren des Ergebnisses in $zwi1
#
echo -e "\ndiff.out\nfolgendes aus sed wurde nicht zugeordnet :\n" >> diff.out;
cat > "$zwi6" <<sixis
s#Dateien $1/\(.*\) und $2/\1 sind verschieden.#\1#w $zwi2
t
s#Dateien $1/\(.*\) und $2/\1 sind identisch.#\1#w $zwi3
t
s#^Nur in $1\(.*\)\.#\1#w $zwi4
t
s#^Nur in $2\(.*\)\.#\1#w $zwi5
t
p
sixis
# manchmal schreibe ich Begleittext (Kommentare) in eine Datei "in" - darum :
{ if test -r in ;
then echo -e "\n\n-------------- Liste der Datei in ------------\n" ; cat in ;
echo -e "\n--------- Ende Liste der Datei in ------------" ;
fi
echo -e "Aufruf von difd mit \n\$# ($#) \$@ ($@)\nDatum `date` \npwd (`pwd`)\n\nVerzeichnis f1="$1"\nVerzeichnis f2="$2"\n";
echo -e "Es folgt die "Rest"-Ausgabe von sed - also alles was nicht geordnet und aussortiert wurde - nicht schlimm\n$t";
sed -nf "$zwi6" "$zwi1";cat $zwi6;
echo -e "\n$t\nEnde der "Rest"-Ausgabe von sed - also alles was nicht geordnet und aussortiert wurde";
z2=$(echo `wc -l $zwi2` | awk '{ print $1 }' - );
z3=$(echo `wc -l $zwi3` | awk '{ print $1 }' - );
z4=$(echo `wc -l $zwi4` | awk '{ print $1 }' - );
z5=$(echo `wc -l $zwi5` | awk '{ print $1 }' - );
echo -e "$t\nZusammenfassend die Ergebnisse :\nAnzahl der verschiedenen Dateien (in beiden Verzeichnissen) : $z2\
\nAnzahl der Dateien die identisch sind (in beiden Verzeichnissen) : $z3\
\nAnzahl der Dateien die es nur im Verzeichnis f1="$1" gibt : $z4\
\nAnzahl der Dateien die es nur im Verzeichnis f2="$2" gibt : $z5\nEnde der Zusammenfassung";
echo -e "$t\nAnzahl der verschiedenen Dateien (in beiden Verzeichnissen) : $z2"; cat $zwi2;
echo -e "$t\nAnzahl der Dateien die identisch sind (in beiden Verzeichnissen) : $z3 "; cat $zwi3;
echo -e "$t\nAnzahl der Dateien die es nur im Verzeichnis f1="$1" gibt : $z4"; cat $zwi4;
echo -e "$t\nAnzahl der Dateien die es nur im Verzeichnis f2="$2" gibt : $z5"; cat $zwi5;
echo -e "$t\nhier ist das normale Ende\n"; } > diff.out;
vim '+syntax on' '+set nowrap' diff.out "$zwi1";
#vim '+syntax on' '+set nowrap' diff.out "$zwi1" "$0"; # falls Ihr "difd" nach /usr/local/bin kopiert habt, könnte man ev. so schreiben
rm -v $zwi{1..6} ; echo -e "# rm \$zwi{1..6} : RC : $? ";
|
Also : leider kriege ich was (noch) nicht gebacken - im code heißt es (offensichtlich) an mehreren Stellen - immer in echo-Befehlen (hier ein Beispiel) :
echo -e "$t\nAnzahl der Dateien die es nur im Verzeichnis f2="$2" gibt : $z5"; cat $zwi5;
aber es müßte heißen :
echo -e "$t\nAnzahl der Dateien die es nur im Verzeichnis f2=\"$2\" gibt : $z5"; cat $zwi5;
entsprechend :
echo -e "Es folgt die "Rest"-Ausgabe von sed - also alles was nicht geordnet und aussortiert wurde - nicht schlimm\n$t";
echo -e "\n$t\nEnde der "Rest"-Ausgabe von sed - also alles was nicht geordnet und aussortiert wurde";
echo -e "$t\nAnzahl der Dateien die es nur im Verzeichnis f1="$1" gibt : $z4"; cat $zwi4;
aber irgendwie widersteht mir der "Editor" hier - darum - korrigiert es bitte selber - sorry
MfG