日付が複数回含まれるテキストファイルがあります。すべての日付は形式で作成されますMon-DD-YYYY
。現在の日付のすべての日付を更新してフォーマットを維持する必要がありますMon-DD-YYYY
。
スクリプト言語は、 、 組み込み関数などと特定の日付形式を一致させるbash
方法がわからないことが大きな問題です。sed
awk
bash
私を助けてくれますか?
ベストアンサー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回一致させます。
残りは上記のものと同じです