Unterdrücken von Awk-Warnungen

Unterdrücken von Awk-Warnungen

Bei einem Skript erhalte ich eine Warnung der Form awk: warning: escape sequence \( treated as plain (. Da ich die Ausgabe des Skripts für bestimmte Aufgaben verwenden möchte, soll es nur Ergebnisse und keine Warnungen ausgeben.

Ich kann diese Warnung leicht korrigieren, aber gibt es eine Möglichkeit, alle Warnungen in awk zu entfernen?

Antwort1

Warnungen und Fehlermeldungen werden im Allgemeinen an stderr gesendet, und das scheint auch für der Fall zu sein awk. Daher sollte die Umleitung von stderr nach /dev/null verhindern, dass Sie diese Meldungen sehen, wie folgt:

awk your_options your_file 2>/dev/null

Antwort2

Das Problem bei der Weiterleitung stderran /dev/null(wie in der Antwort von @garyjohn vorgeschlagen) ist, dass Sie verpassenALLEFehler, nicht nur diese Warnung, die Sie unterdrücken möchten. Sie werden also alles Wichtige übersehen, was schief geht. Im Allgemeinen eine schlechte Idee.NIEMALStun Sie dies, es sei denn, es gibt keine andere Alternative. Glücklicherweise gibt es in diesem Fall eine viel bessere Alternative.

Die saubere Lösung für das Problem des OP besteht darin, " \\(" statt " \(" zu verwenden. Davor möchte awk/gawk Sie warnen – es ist nicht nur Gejammer zum Spaß.

verwandte Informationen