sed / unixコマンドを使用して(yyyymmdd)間の日付を置き換えます。

sed / unixコマンドを使用して(yyyymmdd)間の日付を置き換えます。

次のように3つの.datファイルがあるとします。

Psdm_123_20200221.dat
Psdm_20200221.dat
Psdm_acc_20200221_12345667.dat

出力

Psdm_123*.dat
Psdm_*.dat
Psdm_acc_*.dat

ベストアンサー1

次のsedコマンドで操作を実行する必要があります。

sed 's/20[0-9]\{2\}\(0[1-9]\|1[012]\)\([012][0-9]\|3[01]\)[^.]*/*/'

または、オプションをsed理解したら、ほとんどのバックスラッシュを省略できます。-r-E

sed -r 's/20[0-9]{2}(0[1-9]|1[012])([012][0-9]|3[01])[^.]*/*/'

これは、いくつかの健全性検査(2000年から2099年の年、01から12までの月、01から31の範囲の日)で「YYYYMMDD」パターンを見つけて置き換えます。.日付の後のファイル名にリテラルが1つしかない場合は、それ以降のすべての項目(ファイル拡張子を含まない)。これは、置き換える式で「0回以上を除くすべて」()を許可することによって.行われます。[^.]*

おすすめ記事