sedを使用した日付出力の解析

sedを使用した日付出力の解析

日付出力の空白を「_」に置き換えようとしましたが、成功しませんでした。

$date
Fri Sep 14 14:10:04 EDT 2012

$ date | sed 's/ /_/'
Fri_Sep 14 14:10:24 EDT 2012

ご覧のとおり、最後のコマンドは最初の空白のみ_'に置き換えられます。なぜ他のスペースはスキップするのですか?

答え1

努力する:

$ date | tr ' ' '_'

または

$ date | sed 's/ /_/g'

のデフォルト動作なので、コマンドは日付入力で最初に一致するインスタンスのみを置き換えますsedgコマンドの最後に(グローバル置換)オプションを追加すると、その式sedのすべての項目が一致して置き換えられます。

答え2

私の2セント。日付を1語で表示したい場合は、良い形式は次のとおりです。ISO 8601規格2012-09-14T21:08:12.簡潔で明確で、年代順はアルファベット順と同じです。

date +%Y-%m-%dT%T

一部のシステムでは、次のように書くこともできます。

date +%FT%T

しかし、夏時間を実施する時間帯では、これはまだ不明です。追加すると%zあいまいさが削除されますが、注文には役立ちません。別のオプションは、タイムゾーンに依存しないUTC時間(使用-u)またはUnix Epoch時間(一部の実装の場合)を表示することです。%s

関連情報