Sie sind nicht angemeldet.

  • »horida« ist der Autor dieses Themas

Beiträge: 7

Registrierungsdatum: 14.11.2017

Derivat: Kein Ubuntu-Derivat

Version: unbekannte Version

Architektur: 32-Bit PC

Desktop: XFCE

Andere Betriebssysteme: Knoppix 7.6.1 (mit lt. uname Linux Microknoppix 4.2.6 )

  • Nachricht senden

1

08.06.2018, 12:50

kleines Script um die Ausgabe von diff etwas zu strukturieren

(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

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »horida« (09.06.2018, 02:30)