テキストファイルの日付を現在の日付に更新

テキストファイルの日付を現在の日付に更新

日付が複数回含まれるテキストファイルがあります。すべての日付は形式で作成されますMon-DD-YYYY。現在の日付のすべての日付を更新してフォーマットを維持する必要がありますMon-DD-YYYY

スクリプト言語は、 、 組み込み関数などと特定の日付形式を一致させるbash方法がわからないことが大きな問題です。sedawkbash

私を助けてくれますか?

ベストアンサー1

current_date=$(date +"%m-%d-%Y")希望の日付を設定して実行してください。

sed -i.bak "s/[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}/$current_date/g" your_file.txt

これにより、ファイルのすべての日付を一致させ、現在の日付に置き換えることができます。

sedこの場合、コマンドは次のように動作しますsed "s/tobereplace/replacement/g"。最後はgグローバルを表します。つまり、tobeplaceパターンが発生するたびに置換に置き換えられることを意味します。

正規表現パターンを置き換えるために使用されます。[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}使用されるという意味だ。

  • [0-9]0から9の間の任意の数
  • \{2\}二重
  • ハイフン
  • また同じです、また同じですが、4回\{4\}

編集する: FelixJNがコメントで述べたように、日付コマンドで%bを使用し、正規表現の最初の部分を次のように置き換えることができるので、月を文字列にしたいと思います。

current_date=$(date "+%b-%d-%Y")
sed -Ei "s/[A-Z][a-z]\{2\}-[0-9]\{2\}-[0-9]\{4\}/$current_date/g" your_file.txt

この場合、正規表現は次のように動作します。

  • [A-Z] AからZまでのすべての大文字と一致します。
  • [a-z]\{2\}aからzまでのすべての小文字を2回一致させます。

残りは上記のものと同じです

おすすめ記事