TL; DR. ISO-8601 형식으로 초 단위의 유닉스 시간에서 datetime으로 이동하는 방법은 무엇입니까? 이것은 언어 질문보다 도서관 질문에 더 가깝습니다.
핑 타임 스탬프 (유닉스 시간 + 마이크로 초)를 날짜 시간으로 해석하여 시각화하거나 날짜 및 시간 작업을 수행 할 수 있기를 바랍니다. 긴 핑 추적 (수천 줄)이 있는데 각 줄은 핑의 성공 또는 실패를 나타냅니다.
나는 이미 정규식을 사용하여 유닉스 시간 (마이크로 초없이)을 얻기 위해 장난감 예제를 만들 수 있었지만 APL에서 datetimes를 사용하는 방법을 찾지 못했습니다. Github에서 APLteam과 그들의 하위 프로젝트가 호출 한 APLtree 프로젝트를 찾았 DateAndTime
지만 설치하지 못했습니다. 진행 방법을 모르겠습니다.
ping 타임 스탬프 앞에 ISO-8601 형식으로 명시 적으로 작성된 datetime이 이미 있다는 것을 알고 있지만 APL의 기본 사항을 배우기 위해 datetime을 조작하고 싶습니다. 또한 유닉스 시간에 대한 작업을 수행 한 다음 ISO-8601 형식의 날짜 시간으로 변환 할 수 있습니다.
추적은 Linux에서 다음 명령을 사용하여 생성됩니다.
ping -n -i 30 -O -D my.domain.name | while read pong; do echo "[WAN] $(date --iso-8601=seconds): $pong"; done
출력 추적은 다음과 같습니다.
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: icmp_seq=1037 ttl=234 time=720 ms
[WAN] 2020-01-31T18:03:34+0100: [1580490214.630890] no answer yet for icmp_seq=1038
APL 프로그램 :
v←('\[(\d+)\.'⎕S'\1')⊃⎕NGET'/Users/ludo/Desktop/so/ping.txt' 1
v
1580490155 1580490214
⍴v
2
DISPLAY v
┌→──────────────────────────┐
│ ┌→─────────┐ ┌→─────────┐ │
│ │1580490155│ │1580490214│ │
│ └──────────┘ └──────────┘ │
└∊──────────────────────────┘
또 다른 질문이 있습니다. []
및 의 사용 순위가 다른 이유는 ⊃
무엇입니까? 한 경우에는 벡터가 있고 다른 경우에는 간단한 문자열 (스칼라)이 있습니까? 왜 ⍴⍴v[1]
0입니까? 아래 예를 참조하십시오.
v←⎕NGET'/Users/ludo/Desktop/so/ping.txt' 1
v
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: ic
mp_seq=1037 ttl=234 time=720 ms [WAN] 2020-01-31T18:03:34+0100: [1580490
214.630890] no answer yet for icmp_seq=1038 UTF-8-NOBOM 13 10
DISPLAY v
┌→───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ┌→─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ┌→──────────┐ ┌→────┐ │
│ │ ┌→───────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ┌→──────────────────────────────────────────────────────────────────────────────────┐ │ │UTF-8-NOBOM│ │13 10│ │
│ │ │[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: icmp_seq=1037 ttl=234 time=720 ms│ │[WAN] 2020-01-31T18:03:34+0100: [1580490214.630890] no answer yet for icmp_seq=1038│ │ └───────────┘ └~────┘ │
│ │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ └───────────────────────────────────────────────────────────────────────────────────┘ │ │
│ └∊─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │
└∊───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
⍴v
3
v[1]
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: ic
mp_seq=1037 ttl=234 time=720 ms [WAN] 2020-01-31T18:03:34+0100: [1580490
214.630890] no answer yet for icmp_seq=1038
⊃v
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: icm
p_seq=1037 ttl=234 time=720 ms [WAN] 2020-01-31T18:03:34+0100: [15804902
14.630890] no answer yet for icmp_seq=1038
⍴v[1]
⍴⊃v
2
⍴⍴v[1]
0
⍴⍴⊃v
1
ISO-8601 형식으로 초 단위의 유닉스 시간에서 datetime으로 이동하는 방법은 무엇입니까?
'date' 'days'⎕CY'dfns'
unix0←days 1970 1 1
sPerDay←24×60×60
UnixToTs←date unix0+÷∘sPerDay
TsToIso←{'--T::'@(2+3×⍳5)∊⍕¨(⊃,100+1∘↓)6↑⍵} ⍝ modified from aplcart.info?q=iso8601
UnixToIso←TsToIso UnixToTs
UnixToIso 1580490155
2020-01-31T17:02:35
편의를 위해 그 반대입니다.
IsoToTs←⍎¨∊∘⎕D⊆⊢
TsToUnix←sPerDay×unix0-⍨days
IsoToUnix←TsToUnix IsoToTs
IsoToUnix '2020-01-31T17:02:35'
1580490155
정규식을 사용하여 유닉스 시간 얻기
파일이 일관된 경우 APL을 사용하여 데이터를 추출하는 것이 좋습니다. 속도 차이가 클 수 있습니다. 예를 들어 모든 행이 다음과 같은 정확한 형식을 사용하는 경우 :
v←(⍎¯10↑43∘↑)¨⊃⎕NGET'/Users/ludo/Desktop/so/ping.txt' 1
DISPLAY v
┌→────────────────────┐
│1580490155 1580490214│
└~────────────────────┘
[]와 ⊃ 사용의 순위 차이는 무엇입니까?
[
… ]
배열에서 추출한 요소를 공개 ( "개방")하지 않으므로 중첩 된 배열의 요소는 닫힌 상태로 유지됩니다.
한 경우에는 벡터가 있고 다른 경우에는 간단한 문자열 (스칼라)이 있습니까?
예, 한 경우에는 벡터로, 다른 경우에는 포함 된 벡터 로 표현하는 것이 좋습니다 .
⍴⍴v [1]이 0 인 이유는 무엇입니까?
스칼라의 순위 (순위가 더 높은 배열이 포함되어 있더라도)가 0이기 때문입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다