日付を現在の日付に置き換える

日付を現在の日付に置き換える

abc.fil。形式の内容を持つファイルがあります。 。フォーマットで出力するようにファイルをyyyymmdd.xyz.doc望みます。誰でもこの問題を解決するのに役立ちますか?catabc.fil20150127.xyz.doc

サンプルファイル:

$ cat abc.fil
o/p: yyyymmdd.xyz.doc
yyyymmdd.mno.dat
abc.txt

期待される出力:yyyymmdd現在の日付が同じ順序で表示されることを望みます。

答え1

あなたが使用できるsed

sed "s/yyyymmdd/$(date '+%Y%m%d')/g" abc.fil

これにより、文字列がyyyymmdd必要に応じてフォーマットされた現在の日付に置き換えられます。

編集する:

yyyymmdd日付形式のみを置き換えるには、次のコマンドを使用します(GNU仮定)sed

sed -r "s/[12][0-9]{3}[01][0-9][0-3][0-9]/$(date '+%Y%m%d')/g" abc.fil

長い正規表現パターンの意味は次のとおりです。最初の数字は1または2([12])、次の3つの数字は[0-9]0から9()の数字(年)です。月の場合、最初の数字は0または1になり、2番目の数字は0から9までの数字になります([01][0-9])。結局その日と同じでした。

答え2

> today=$(date +%Y%m%d)
> sed "s/yyyymmdd/${today}/g" abc.fil
o/p: 20150127.xyz.doc
20150127.mno.dat
abc.txt

答え3

努力する

cat abc.fil | sed s/yyyymmdd/`date +%Y%m%d`/

関連情報