【发布时间】:2017-05-26 21:27:41
【问题描述】:
我编写了一些脚本来安排文件的输出并打印第一个字段,时间是这样的:15:23:30。
我尝试通过将第一个字段的每个部分相乘以将其转换为秒来转换第一个字段,然后在每两行之间进行减法,但我不能将每一行都作为参数来在每两行之间进行运算.
for rec in $(cut -d " " -f2 file.txt | uniq -d); do
grep -- "$rec" file.txt done |
awk '{split($0,a," "); print a[1] }'
输入文件类似于 /var/log/messages
May 27 02:43:40 Rolly NetworkManager[2411]: <info> (eth0): DHCPv4 state changed renew -> renew
May 27 02:43:40 Rolly NetworkManager[2411]: <info> address 192.168.159.133
May 27 02:43:40 Rolly NetworkManager[2411]: <info> prefix 24 (255.255.255.0)
May 27 02:43:40 Rolly NetworkManager[2411]: <info> gateway 192.168.159.2
May 27 02:43:40 Rolly NetworkManager[2411]: <info> nameserver '192.168.159.2'
May 27 02:43:40 Rolly NetworkManager[2411]: <info> domain name 'localdomain'
May 27 02:56:55 Rolly dhclient[2481]: DHCPREQUEST on eth0 to 192.168.159.254 port 67 (xid=0x3bb3abec)
May 27 02:56:55 Rolly dhclient[2481]: DHCPACK from 192.168.159.254 (xid=0x3bb3abec)
May 27 02:56:55 Rolly dhclient[2481]: bound to 192.168.159.133 -- renewal in 795 seconds.
May 27 02:56:55 Rolly NetworkManager[2411]: <info> (eth0): DHCPv4 state changed renew -> renew
所需的输出应该是时间列 然后对它的某些行进行一些操作
我想得到类似的输出
1m 25s
如果我可以通过减去转换时间的 2 个值来获得某些过程的持续时间
【问题讨论】:
-
您可以添加输入示例和所需输出吗?那真的很有帮助。
-
“对它的某些行进行一些操作”? 我想你应该写一个脚本。如果您不告诉我们您要执行哪些操作,我们将无法告诉您如何操作。
-
我在上面提到过:通过将第一个字段乘以它的每个部分将其转换为秒,然后在每两行之间进行减法
-
edit 你的问题显示给定输入的预期输出。见How to Ask。
-
我想将时间列转换为秒来计算它们的一些记录的减法,但我不能