我有這個資料,我有兩個紀元值,我必須提取該值然后需要計算差異?
;;epoch1;;epoch 2
617B96A302C71177;;1638297252.658;;1638297253.078;TTrans1;DEE61;66500;xxxxx;in;0x19;0x0;0;;scb:in;0x19;0x0;0;;sc:iund;0x0;ggp-ir:djkoe:ID 0: DSP: 1:trunk_02:ch_000
我嘗試了以下方法,但不知道如何計算差異。
#!/bin/bash
awk -F";;|;" -vOFS='\t' '{print strftime("%c", $3), strftime("%c", $2)}' duration.txt(data is written in this file)
上述命令的輸出:- Wed Dec 1 00:04:13 2021 Wed Dec 1 00:04:12 2021 Wed Dec 1 00:03:46 2021 Wed Dec 1 00:03:23 2021
epoch 1 =1638297252.658 epoch2 = 1638297253.078 首先我必須從提到的字串中提取 epochs 值。然后計算時間間隔(或差異),我試圖將其轉換為以下格式
2021 年 12 月 1 日星期三上午 12:04:13 IST。
但即使在以上述格式轉換兩個紀元之后,我也不知道如何計算差異。
我已經使用 awk 命令從字串中提取欄位。請原諒我糟糕的解釋
uj5u.com熱心網友回復:
awk -F ';' 'FNR!=1 {high = $3>$5?$3:$5; low = $3<$5?$3:$5; print high-low}' duration.txt
# gives
0.42
或者也許更易讀:
awk -F ';' '
FNR!=1 {
if ($3 > $5) {
high=$3; low=$5
} else {
high=$5; low=$3
}
print high-low
}' duration.txt
uj5u.com熱心網友回復:
使用 awk
$ awk -F";" '{$3=strftime("%A %d %B %Y %T %Z",$3); $5=strftime("%A %d %B %Y %T %Z",$5); hour=substr($3,17,2);min=substr($3,20,2);sec=substr($3,23,2); hour2=substr($5,17,2);min2=substr($5,20,2);sec2=substr($5,23,2)} NR > 1 {print "epoch 1: "$3"\nepoch 2: "$5"\nTime difference is "hour2 - hour" hours " min2-min" minutes " sec2 - sec" seconds"}' input_file
epoch 1: Tuesday 30 November 2021 18:34:12 GMT
epoch 2: Tuesday 30 November 2021 18:34:13 GMT
Time difference is 0 hours 0 minutes 1 seconds
$ cat script.awk
#!/usr/bin/env/ awk -f
BEGIN {
FS=";"
} {
$3=strftime("%A %d %B %Y %T %Z",$3)
$5=strftime("%A %d %B %Y %T %Z",$5)
hour=substr($3,26,2)
min=substr($3,29,2)
sec=substr($3,32,2)
hour2=substr($5,26,2)
min2=substr($5,29,2)
sec2=substr($5,32,2)
} NR > 1 {
print "epoch 1: "$3"\nepoch 2: "$5"\nTime difference is "hour2 - hour" hours " min2-min" minutes " sec2 - sec" seconds"
}
$ awk -f script.awk input_file
epoch 1: Tuesday 30 November 2021 18:34:12 GMT
epoch 2: Tuesday 30 November 2021 18:34:13 GMT
Time difference is 0 hours 0 minutes 1 seconds
uj5u.com熱心網友回復:
以秒為單位獲得差異:
awk -F ';' '{x = $5 - $3; print ((x < 0.0) ? -x : x)}'
說明:
我有這個資料,我有兩個紀元值
哦,那么您已經擁有了兩者的自紀元以來的秒數。
現在您需要從 SCSV 中提取這兩個紀元時間戳。
有了這樣一個標題;;epoch1;;epoch 2,這些領域將$3與$5中awk -F ';'
然后,您只需減去兩次并在結果為負時更改結果的符號。
限制:如果您的 SCSV在欄位值中包含;或\n字符,那么您將不得不使用 awk 以外的其他工具來決議它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372395.html
