我想获得具有唯一文件列组合的行的时差。
例如:
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:00:56||I/O|12413508|2266556|2253044|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:02:11||Driver text|40|1048536|1048532|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:04:07||Processor|40750784|25825000|16768820|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:05:56||I/O|12413508|2266556|2253044|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:07:11||Driver text|40|1048536|1048532|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:09:07||Processor|40750972|25824812|16768820|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:10:56||I/O|12413508|2266556|2253044|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:12:11||Driver text|40|1048536|1048532|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:14:07||Processor|40750972|25824812|16768820|300
在上面这个文件样本中,我正在制作第1列和第7列的独特组合。并且找到下一个可用的相同组合的时间差,例如考虑第一行,我正在检查第1列和第7列的唯一组合&#39 ; C',' I / O'寻找下一个可用的组合。
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:00:56||I/O|12413508|2266556|2253044|300
具有相同组合的下一个可用行
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:05:56||I/O|12413508|2266556|2253044|300
这是我的试用代码,但我没有得到正确答案:
awk -F'|' 'BEGIN{OFS=FS} {k=$7 FS $7} k in a{print $1,$7,$5"-"a[k]} {a[k]=$5}' 'M02232016.IGA-US-TESTFEED.dat' times | column -t -s'|' | grep '/' | sort -u | head
答案 0 :(得分:0)
如果您要查找唯一组合的第二个实例,可以使用此
$ awk -F'|' '{a[$1,$7]++} a[$1,$7]==2' file
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:05:56||I/O|12413508|2266556|2253044|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:07:11||Driver text|40|1048536|1048532|300
C|IGA LA TESTFEED|mpg-fa-29-9-AnacDu23.gdl.mex.ibm.com|03/07/2016|00:09:07||Processor|40750972|25824812|16768820|300
但是,也许你正在尝试别的东西。如果是这样,请更新原始帖子的详细信息。
以下是时间的成对差异
$ awk -F'|' 'BEGIN{OFS=FS}
{k=$1 FS $7}
k in a{print $1,$7,$5"-"a[k]} {a[k]=$5}' times |
column -t -s'|'
C I/O 00:05:56-00:00:56
C Driver text 00:07:11-00:02:11
C Processor 00:09:07-00:04:07
C I/O 00:10:56-00:05:56
C Driver text 00:12:11-00:07:11
C Processor 00:14:07-00:09:07
并计算秒数
$ awk -F'|' 'BEGIN{OFS=FS}
{k=$1 FS $7}
k in a{split(a[k],p,":");
split($5,n,":");
t=((n[1]-p[1])*60+(n[2]-p[2]))*60+n[3]-p[3];
print $1,$7,$5"-"a[k],t} {a[k]=$5}' times |
column -t -s'|'
C I/O 00:05:56-00:00:56 300
C Driver text 00:07:11-00:02:11 300
C Processor 00:09:07-00:04:07 300
C I/O 00:10:56-00:05:56 300
C Driver text 00:12:11-00:07:11 300
C Processor 00:14:07-00:09:07 300