Hallo,
mir wurde hier bereits super geholfen und ich bin auch schon mit find gut am start danke. Wieder einmal geht es darum jetzt etwas "sauber" zu machen.
Folgende Situation:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | while read abschluesse_zeile ; do count=0 while read abrufe_zeile ; do count=`expr $count + 1` positionp=`awk -v a="$abrufe_zeile" -v b="${abschluesse_zeile:2}" 'BEGIN{print index(a,b)}'` if [ "$positionp" -gt 0 ] ; then echo $abschluesse_zeile "wurde bereits abgerufen bei "${abrufe_zeile:9:3}" am "${abrufe_zeile:2:6} break elif [ $count -eq $anzahl_abrufe ] ; then echo $abschluesse_zeile "wurde noch nicht abgerufen bei einem Distributor / Provider" fi done < ../03_ABRUFE/Abrufe.txt done < Abschluesse.txt |
zwei verschachtelte Schleifen: Es werden aus der Datei Abschlüsse zeilenweise Dateinamen.pdf ausgelesen. Findet nun eine Übereinstimmung des Dateiname-Strings mit einem aus der ebenso zeilenweise eingelesenen autogenerierten Datei Abrufe.txt statt, so wird dies an die Standartausgabe ausgegeben und die Schleife wird gebrochen und der nächste Abschluss wird eingelesen.
Werden jedoch alle Zeilenstrings der Abrufe.txt mit der Zeile aus Abschluesse.txt verglichen und findet da garkeine Übereinstimmung statt ist die Folgerung daraus, dass es noch keinen Abruf gegeben hat und dies gemacht werden muss.
Wie kann ich das als Bedingung machen, dass nur wenn die Schleife durchgelaufen ist und nicht unterbrochen wurde nur dann echo $abschluesse_zeile "wurde noch bei keinem Distributor/Provider eingereicht." ausgegeben wird.
Ich hatte überlegt zuerst einen Zeilencount zu machen der Abrufdatei und dann am ende wenn die Schleife sooft durchlaufen wurde wie es Zeilen gibt in der Datei und das erfolglos bei der while direktive, dass er erst dann das feststellt.
und da ist mir auch aufgefallen dass wc -l noch den Dateinamen angibt am ende. Bekomme ich wc -l auch als reine Integerwert ohne grosse Stringmanipulation?
Wie krieg ich das als Bedingung hin dass wenn die Schleife durchgelaufen ist ohne erfolg dass es zu break kommt dass erst dann eine Zeile ausgeführt wird?
Der Weg über wordcount lines ist umständlich und nicht elegant, das sagt mir mein Gespür für Ästhetik.
Danke.
PS: Die Frage bei wordcount -list nur einen Integer zu bekommen geht mit wc -l < file.txt anstelle wc -l file.txt