Ich habe einen Prozess, der eine Liste von Dateien aus einem Verzeichnis filtert (indem find
überprüft wird, ob Dateien älter als ein bestimmter Zeitraum sind, um anzuzeigen, dass eine Warteschlange hängen bleibt). Es kann etwas zurückgeben oder nicht, und wenn dies der Fall ist, wird es per Post an gesendet cron
.
Was ich wissen möchte, ist, ob es ein Programm oder eine einfache bash
Methode gibt, an die diese Ausgabe weitergeleitet werden kann, und ob eine Ausgabe durch sie geleitet wird, stellen Sie eine Kopfzeile voran (wie "Dies sind die Dateien, die in der Warteschlange stecken").
shell
text-processing
pipe
email
Silvein
quelle
quelle
Antworten:
sed Inline-Antwort:
quelle
awk
Antwort kann so angepasst werden, dass sie nur 8 Zeichen länger als sed (oben) ist:awk 'NR==1{print "header"}1'
... aber noch kürzer als oben, um 5 Zeichen :sed "1i header"
Da die anderen Methoden tatsächlich keine
bash
Methode bereitstellen , wurde gefragt:Alle verwendeten Befehle sind intern in
bash
.Wenn keine Ausgabezeilen vorhanden sind, wird nichts gedruckt. Wenn ja, wird die Kopfzeile gedruckt und dann die Ausgabe von
command
.quelle
bash
.Wenn ich finde, dass ich bei der Verarbeitung eines Eingabestreams den Status beibehalten möchte, finde ich, dass awk oft das beste Werkzeug ist.
In diesem Fall möchten Sie einen Stream verarbeiten. Wenn Sie Eingaben sehen, schreiben Sie einen Header aus und zeichnen Sie auf, dass Sie den Header geschrieben haben.
Dies gibt einen Header aus, wenn die Variable
input_seen
false ist (standardmäßig, wenn sie nicht definiert ist) und setzt sie auf einen Wahrheitswert (1). Die1
am Ende ist eine weitere Regel , die eine kurze Hand Art zu sagen: die aktuelle Zeile gedruckt werden - auch die ersetzen könnte1
mit{ print }
.quelle
sed
Version.Oder,
quelle