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 awk
cá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ụngdate
lệnh bên ngoài để luôn di động.