出力ファイルを生成する前に、sed -E を使用して文字列を現在の日付と時刻に置き換えます。

出力ファイルを生成する前に、sed -E を使用して文字列を現在の日付と時刻に置き換えます。

平均CPU使用率ログを保存するためにファイルを生成しようとしています。

sudo mpstat 1 5 | grep Average | sed -E 's|Average:|$(date)|g' > cpu_usage_test.txt

「平均:」テキストを現在の日付と時刻に置き換えようとしています。別のアプローチを試しましたが、出力には文字列として$(date)が表示されます。簡単にテストするには、次のコマンドを使用して端末自体に表示します。

sudo mpstat 1 1 | grep Average | sed -E 's|Average:|$(date)|g'

ベストアンサー1

シェルは一重引用符で囲まれた文字列のどれも置き換えません。代わりに二重引用符を使用してください。

これらのオプションは不要で、次のことなく-E使用できます。grepsudo

mpstat 1 1 | sed -n "s|Average:|$(date)|gp"

-Eいいえ、ここでは拡張正規表現は使用されません。デフォルトでは、印刷を-n防ぎ、sedpAverage:」が実際に置き換えられている場合にのみ行を印刷します。

これGNU sed マニュアルところで、学習に悪くはありません。

おすすめ記事