Unix 创建awk程序以添加最后一列数据
我正在尝试创建一个awk程序来添加最后一列数据(用户连接的时间),同时使格式仍然可读(小时不超过24小时,分钟不超过60分钟)。但是第一行没有显示时间,我必须忽略它Unix 创建awk程序以添加最后一列数据,unix,Unix,我正在尝试创建一个awk程序来添加最后一列数据(用户连接的时间),同时使格式仍然可读(小时不超过24小时,分钟不超过60分钟)。但是第一行没有显示时间,我必须忽略它 jms68988 pts/0 161.6.5.14 Fri Mar 22 08:41 still logged in jms68988 pts/4 ip143-84.snl.wku Wed Mar 20 10:15 - 11:14 (00:58) jms68988 pts/0 161.6.5.14 Wed Mar 20 09:59
jms68988 pts/0 161.6.5.14 Fri Mar 22 08:41 still logged in
jms68988 pts/4 ip143-84.snl.wku Wed Mar 20 10:15 - 11:14 (00:58)
jms68988 pts/0 161.6.5.14 Wed Mar 20 09:59 - 07:44 (1+21:45)
jms68988 pts/0 161.6.5.14 Wed Mar 20 09:18 - 09:30 (00:11)
jms68988 pts/3 ip143-84.snl.wku Mon Mar 18 10:18 - 11:13 (00:55)
jms68988 pts/6 ip143-84.snl.wku Fri Mar 15 10:15 - 11:14 (00:59)
jms68988 pts/6 ip143-84.snl.wku Wed Mar 13 10:16 - 11:13 (00:57)
jms68988 pts/1 161.6.5.14 Wed Mar 13 10:05 - 07:47 (4+21:41)
jms68988 pts/0 161.6.5.14 Fri Jan 25 12:42 - 07:57 (2+19:14)
jms68988 pts/7 ip143-84.snl.wku Fri Jan 25 10:28 - 11:16 (00:47)
jms68988 pts/0 161.6.5.14 Fri Jan 25 08:33 - 08:35 (00:01)
您可以使用awk做这样的事情吗?您可以在awk
中做类似的事情-有两个基本方面需要考虑:
- 记录选择;及
- 记录处理
第一个(记录选择)是通过在每行上查找特定的正则表达式来完成的,下面的代码为您的输入数据选择最可能的情况,特别是最终字段匹配的情况:
(<days>+<hours>:<minutes>)
顺便说一句,如果您担心我对value=something+0
这样的代码是否明智,这只是一种迫使awk
将变量视为数值而不是字符串的方法
当您在输入数据上运行该程序时,您可以看到以下结果:
pax> awk -f prog.awk prog.input
0d 0h 58m (00:58)
1d 21h 45m (1+21:45)
0d 0h 11m (00:11)
0d 0h 55m (00:55)
0d 0h 59m (00:59)
0d 0h 57m (00:57)
4d 21h 41m (4+21:41)
2d 19h 14m (2+19:14)
0d 0h 47m (00:47)
0d 0h 1m (00:01)
=====
9d 19h 28m (from 14128m)
pax> awk -f prog.awk prog.input
0d 0h 58m (00:58)
1d 21h 45m (1+21:45)
0d 0h 11m (00:11)
0d 0h 55m (00:55)
0d 0h 59m (00:59)
0d 0h 57m (00:57)
4d 21h 41m (4+21:41)
2d 19h 14m (2+19:14)
0d 0h 47m (00:47)
0d 0h 1m (00:01)
=====
9d 19h 28m (from 14128m)