我正在尝试编写一个用于解析时间戳文件的脚本,我需要在每一行上追加经过的时间。例如,如果我的文件是这样的,则每个数字都是事件发生的时间:
1
12
50
我想将其追加为
1 11
12 38
50
因为第一次事件发生了11分钟,直到2分钟才开始,等等。
我在访问下一行时遇到问题,并且通常也会循环访问该文件。非常感谢任何帮助。
答案 0 :(得分:4)
awk
救援!
$ awk 'NR==1{p=$1;next}
{print p, $1-p; p=$1}
END{print p}' times
1 11
12 38
50
答案 1 :(得分:0)
给@karakfa
提示 perl -lne 'if ($.==1){$p=$_} else{print "$p ".($_-$p); $p=$_} END{print $p}' times
$.
是行号(类似于awk的NR
)
$_
是当前行的内容(类似于awk的$1
)
输出:
1 11
12 38
50
答案 2 :(得分:0)
仅限BASH - 这是关闭的,不会自己打印最后一个并且您需要初始化行变量,该行变量在开始时导致零。一个更复杂的脚本可以提前读取,或者有人可能会告诉我们如何抵消行索引。
$ cat nums.txt
1
12
50
$ line=0
$ for next in $(cat nums.txt); do echo $line $(expr $next - $line) ;\
> line=$(echo $next) ; done
0 1
1 11
12 38