
日付と形式を含むHTMLファイルがたくさんあります。July 29th, 2011
日付形式を、toなどJuly 29th, 2011
に変更したいと思います。20110729
December 9th, 2010
20101209
うまくいくかもしれませんが、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"