Tôi có một tập tin chứa cái này:
1415602803,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
1415602807,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
1415602811,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
1415602815,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22
Tôi muốn chuyển đổi dấu thời gian thành một ngày ở định dạng này:
2014-11-10 02:00:03,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
2014-11-10 02:00:07,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
2014-11-10 02:00:11,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
2014-11-10 02:00:15,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22
Làm thế nào tôi có thể làm điều đó?
Tôi biết điều này hoạt động: perl -pe 's/(\d+)/localtime($1)/e'(từ câu hỏi này ) nhưng định dạng đầu ra là Mon Nov 10 02:00:03 2014.
Tôi biết lệnh này có thể chuyển đổi dấu thời gian thành đầu ra mong muốn của tôi: date -d@1415602803 +"%F %H:%M:%S"nhưng tôi không thể làm cho nó hoạt động bằng awkcách sử dụng system("cmd")vì tất cả các trích dẫn và không có gì.
awk 'BEGIN{ print strftime("%Y-%m-%d %H:%M:%S", 0) }'đưa raawk: line 2: function strftime never definedở đây. Hãy làm rõ rằng KHÔNG MỌI THỨ AWK cóstrftime()! Đối với một giải pháp chạy trong hầu hết (tất cả?) AWK, vui lòng sử dụngdatelệnh bên ngoài để luôn di động.