날짜가 에포크 시간 형식으로 저장되는 파일 이름 simcloud-target.txt가 있고 모든 날짜를 인간 친화적인 형식으로 변환하고 목록으로 인쇄하고 싶습니다(아래 표시된 것과 동일한 출력이므로 에포크가 아닌 동안 원함) ) 인간 친화적인 방식으로hh:mm:00)
sec504@slingshot:~$ cat simcloud-targets.txt
1679450009
1679450014
1679450018
1679450018
1679450022
1679450023
1679450024
1679450024
1679450033
1679450043
1679450046
1679450060
1679450065
1679450071
sec504@slingshot:~$
답변1
파일의 Unix 타임스탬프 앞에 접두사가 붙을 수 있으면 @
GNU를 date
사용하여 이를 읽을 수 있습니다 -f
. 다음과 @
같이 각 타임스탬프에 접두사를 추가할 수 있습니다 sed
.
sed 's/^/@/' file
...그리고 다음과 같이 GNU에서 출력을 사용할 수 있습니다 date
.
date -f <(sed 's/^/@/' file)
문제의 날짜 스탬프와 현지 시간대를 고려하면 다음과 같습니다.
Wed Mar 22 02:53:29 CET 2023
Wed Mar 22 02:53:34 CET 2023
Wed Mar 22 02:53:38 CET 2023
Wed Mar 22 02:53:38 CET 2023
Wed Mar 22 02:53:42 CET 2023
Wed Mar 22 02:53:43 CET 2023
Wed Mar 22 02:53:44 CET 2023
Wed Mar 22 02:53:44 CET 2023
Wed Mar 22 02:53:53 CET 2023
Wed Mar 22 02:54:03 CET 2023
Wed Mar 22 02:54:06 CET 2023
Wed Mar 22 02:54:20 CET 2023
Wed Mar 22 02:54:25 CET 2023
Wed Mar 22 02:54:31 CET 2023
그런 다음 평소와 같이 원하는 출력 형식을 설정할 수 있습니다 date
. 여기서는 프로세스 대체 대신 일반 파이프를 사용하는 방법도 보여줍니다.
$ sed 's/^/@/' file | date -f - +'%F %T'
2023-03-22 02:53:29
2023-03-22 02:53:34
2023-03-22 02:53:38
2023-03-22 02:53:38
2023-03-22 02:53:42
2023-03-22 02:53:43
2023-03-22 02:53:44
2023-03-22 02:53:44
2023-03-22 02:53:53
2023-03-22 02:54:03
2023-03-22 02:54:06
2023-03-22 02:54:20
2023-03-22 02:54:25
2023-03-22 02:54:31
strftime
man 3 strftime
사용할 수 있는 자리 표시자 형식은 라이브러리 함수( ) 설명서를 참조하세요 .
답변2
거의 모든 것을 사용할 수 있으므로 (g)awk를 사용할 수 있습니다.
awk '1{$1 = strftime("%F %H:%M:%S", $1); print}' < simcloud-targets.txt
결과(저는 다른 시간대에 있기 때문에):
2023-03-22 02:53:29
2023-03-22 02:53:34
2023-03-22 02:53:38
2023-03-22 02:53:38
2023-03-22 02:53:42
…
타임스탬프 이후에 다른 항목(예: 오징어 로그 파일)이 있더라도 계속 작동하기 때문에 이것을 제공합니다.
1679468468.282 223 redacted_ip TCP_TUNNEL/200 7160 CONNECT redacted_name:443 - HIER_DIRECT/redacted_ip -
~이 되다
2023-03-22 08:01:08 223 redacted_ip TCP_TUNNEL/200 7160 CONNECT redacted_name:443 - HIER_DIRECT/redacted_ip -
답변3
이와 같이 및를 사용하면 xargs
다음과 GNU
date
같습니다.
$ xargs < file -I{} date -d '@{}' "+%F %T"
또는 다음과 같이 bourne
* bash
, dash
, ash
, yash
, ksh
, 를 사용합니다(단, & 는 사용하지 않음) zsh
.sh
csh
fish
$ while read epoch; do date -d "@$epoch" "+%F %T"; done < file
산출
2023-03-22 08:53:29
2023-03-22 08:53:34
2023-03-22 08:53:38
2023-03-22 08:53:38
2023-03-22 08:53:42
2023-03-22 08:53:43
2023-03-22 08:53:44
2023-03-22 08:53:44
2023-03-22 08:53:53
2023-03-22 08:54:03
2023-03-22 08:54:06
2023-03-22 08:54:20
2023-03-22 08:54:25
2023-03-22 08:54:31
그리고진주:
$ perl -nE 'say scalar localtime($_)' file
Wed Mar 22 08:53:29 2023
Wed Mar 22 08:53:34 2023
Wed Mar 22 08:53:38 2023
Wed Mar 22 08:53:38 2023
Wed Mar 22 08:53:42 2023
Wed Mar 22 08:53:43 2023
Wed Mar 22 08:53:44 2023
Wed Mar 22 08:53:44 2023
Wed Mar 22 08:53:53 2023
Wed Mar 22 08:54:03 2023
Wed Mar 22 08:54:06 2023
Wed Mar 22 08:54:20 2023
Wed Mar 22 08:54:25 2023
Wed Mar 22 08:54:31 2023