日付を「2011年7月29日」を「20110729」に変更します。

日付を「2011年7月29日」を「20110729」に変更します。

日付と形式を含むHTMLファイルがたくさんあります。July 29th, 2011

日付形式を、toなどJuly 29th, 2011に変更したいと思います。20110729December 9th, 201020101209

うまくいくかもしれませんが、sed間接的な順序のためにまだ解決策が見つかりません。

ベストアンサー1

この種の作業は、ほとんどのツールよりはるかに困難です。 GNUとPerlのPOSIXモジュールはどちらもユーザーが望むものをawk提供しますstrftime()が、正確には提供しません。strptime()

とにかくPerlを使うのはまだ簡単です...

$ perl -MDate::Manip -lpe '$_=UnixDate(ParseDate($_), "%Y%m%d")' <<END
> July 29th, 2011
> December 9th, 2010
> END
20110729
20101209

実際にHTMLを変換しようとしているので、明らかに多くがあります。 sedを使って正規表現を見つけることができれば探す日付文字列を使用すると、Perlを使用して非常によく似た操作を実行できます。

$ perl -MDate::Manip -lpe 's/(")([^"]+)(")/$1 . UnixDate(ParseDate($2), "%Y%m%d") . $3/ge' <<END
dates enclosed "July 29th, 2011" in quotes
"December 9th, 2010"
END
dates enclosed "20110729" in quotes
"20101209"

おすすめ記事