UNIXの特定の場所にあるファイルの日付(30日単位)を更新するには? awkやsedが役に立ちますか?
ファイル形式は次のとおりです。
Thomson:xyz
形式:1
文字セット:ASCII8
ファイルタイプ:イベントファイル
ファイルサブタイプ:mobile_call
ファイルグループ番号:1
グループ内のファイル番号:1グループ内の総ファイル数
:19
ソースID:ソース
タグ:tag-v13
このファイルは GTFplaintext 0.1 によって生成されます。
Event: "61765","1","2014/01/03-13-00-00.00",,"GBP",,,,,,,,,,"61765","0345351816","1407",,,,,,,,,,,,,,,,,,,,,
Footer: text_data_transfer_file
AuditValue_1: 1
AuditValue_2: 0
End: text_data_transfer_file
Lines: 15
Characters: 351
Checksum:
Security_checksum:
End_of_file:
上記のファイルから「Event:」で始まる行に移動し、
「2014/01/03-13-00-00.00」の日付を30日まで更新する必要があります(時間が残っている間は日付のみを更新します)。同じです))。
ディレクトリには20,000個のファイルがあり、これらのファイルの日付を更新する必要があります。
ベストアンサー1
perl
このモジュールを使用すると、Date::Manip
次のことができます。
perl -MDate::Manip -pi -e 's|^Event.*?"\K\d{4}/\d\d/\d\d|
UnixDate(DateCalc("$&", "30 days later"), "%Y/%m/%d")|e' file1 file2...