sed または awk を使用してファイルの日付形式を変更する

sed または awk を使用してファイルの日付形式を変更する

次の形式のファイルがあります

----------------------------------------
  Name: cust foo
  mail: [email protected]
  Account Lock: FALSE
  Last Password Change: 20170721085748Z
----------------------------------------
  Name: cust xyz
  mail: [email protected]
  Account Lock: TRUE
  Last Password Change: 20181210131249Z
----------------------------------------
  Name: cust bar
  mail: [email protected]
  Account Lock: FALSE
  Last Password Change: 20170412190854Z
----------------------------------------
  Name: cust abc
  mail: [email protected]
  Account Lock: FALSE
  Last Password Change: 20191030080405Z
----------------------------------------

Last Password Changeデータ型を変更したいのですが、他の方法があるかどうかはYYYY-MM-DDわかりません。 forループを試してオプションを使用できますが、正規表現を使用するより簡単な方法があるかどうかはわかりません。sedawkdate -d

ベストアンサー1

2つのダッシュを追加し、いくつかの追加文字を削除したものがすべてであるため、必要ありませんdate

$ sed -Ee 's/(Last Password Change: )(....)(..)(..).*Z/\1\2-\3-\4/' < foo.txt
...
  Name: cust foo
  mail: [email protected]
  Account Lock: FALSE
  Last Password Change: 2017-07-21
...

より厳しいパターンの場合、ドット(すべての文字と一致)を数字だけ一致させることで[0-9]置き換えることができます。\1もちろん、置き換えでも括弧内に一致するパターンに拡張されます。

おすすめ記事