Wer kann mir bei einem Skript-Problem helfen?

... komplette Frage anzeigen

4 Antworten

grep relay=  ...

m.W. wird das Gleichheitszeichen durch die Shell interpretiert, was du wohl nicht willst, es sollte also eher so lauten:

grep "relay=" ...

Das gestrige Datum würde ich so ermitteln:

Gestern=$(date -d yesterday +%d.%m.%Y)

Im Script nimmst du dann auf's Datum so Bezug

... grep $Gestern ...

im meinem Beispiel habe ich das Datum so formuliert, daß sich die bei uns übliche Form ergibt, also

17.09.2016

Anhand der Formatierungszeichen kannst du auch einen anderen Aufbau einstellen ... welche Formatierungszeichen möglich sind, bekommst du mit

man date

... sort | uniq -c ...

sollte wohl eher so lauten:

... sort --unique ...

Ich würde so vorgehen, daß du dir sukzessive die Befehle in der Shell so aufbaust, daß du das gewünschte Ergebnis bekommst ...

Variable funktionieren in der Shell genau so wie im Script:

$ Gestern=$(date -d yesterday +%d.%m.%Y)
$ echo $Gestern
17.09.2016
Antwort bewerten Vielen Dank für Deine Bewertung

Hallo

grep relay= /var/log/mail.log | grep 'Sep 14' | cut -f 8 -d ' ' | sort | uniq -c | sort -n

Was soll denn damit getan werden?

Nun möchte ich das in ein Skript verpacken

So:?

#!/bin/bash
grep relay= /var/log/mail.log | grep 'Sep 14' | cut -f 8 -d ' ' | sort | uniq -c | sort

Dabei soll das "grep 'Sep 14' noch durch die Ausgabe von: date -d yesterday +"%b %e" ersetzt werden.

sed "s/'Sep 14'/$(date -d yesterday+"%b %e")/g"

Bist Du sicher das Dein Date-Befehl so funktioniert?

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Akelo
15.09.2016, 22:57

deswegen wollte ich ja das ganze script rauskopiert bekommen c:

0

ersetze  "grep 'Sep 14' "

durch

grep `date -d yesterday +"%b %e`

vlt funktionier es - ausprobieren - Zuerst aufpassen auf "`' und \\

Testen mit echo XXX `date -d yesterday +"%b %e` XXX

sicherlich brauch man dort noch ein paar Sonderzeichen aber mein Comp ist fast KO muss ich morgen reinigen und neu aufsetzen. - kann ich nicht mehr testen.

Du musst den output mit Kombination vom "' \\' abschirmen

Leider mein Comp geht nicht mehr - muss ich abschalten

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von iwolmis
16.09.2016, 04:45

Wenn ich meinen Comp wieder zum laufen bringe , dann bekommst du einen Skript von mir

Ciao

aber versuche es auch selbst :-)

0

#!/bin/bash

GESTERN=$(date -d yesterday +"%b %e")

grep relay= /var/log/mail.log | grep "$GESTERN" | cut -f 8 -d ' ' | sort | uniq -c | sort -n

So funktioniert es jetzt auch. Danke an alle Beteiligten.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?