首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在查找文件后查找最后输入的编号

在查找文件后查找最后输入的编号
EN

Unix & Linux用户
提问于 2018-02-23 09:59:21
回答 1查看 56关注 0票数 0

我的问题有点长,我试图使一个签入和退出系统简单,菜单上有选项1签入和2结帐在结束时,我回家。我的文件包含:

代码语言:javascript
复制
Dato: 22-02-2018    
Mødt ind: 700    
Gået hjem: 1600    
Overtid:    
Dato: 23-02-2018    
Mødt ind: 730    
Gået hjem: 1600
Overtid:

我要在这份文件中找出730和1600的区别。如果数字高于800,它必须打印数字,如果有差异,希望您理解我的问题。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-02-23 10:06:02

如果您想填写的是Overtid:,那么下面是这样做的:

代码语言:javascript
复制
awk 'function overtime(s,e) {
         if (s) printf("Overtid: %d\n", (e - s > 800) ? e - s : 0);
     }
     /^Mødt ind:/  { start = $NF; print } 
     /^Gået hjem:/ { end   = $NF; print } 
     /^Dato:/      { overtime(start, end); print }
     END           { overtime(start, end) }' file

这将从数据中选择开始和结束时间,对于每个Dato:行(这意味着数据中的一个新记录),它会打印出上一条记录的超时时间。这也是在末尾( END块)完成的。

我已经将overtime()作为一个函数来完成,因为我们需要在脚本中的两个不同位置执行相同的操作。函数中的if (s)是为了确保当我们到达数据中的第一条Dato:线时,不会得到虚假的D7输出。

代码中的print语句通过现有数据传递到输出。

输出您的数据:

代码语言:javascript
复制
Dato: 22-02-2018
Mødt ind: 700
Gået hjem: 1600
Overtid: 900
Dato: 23-02-2018
Mødt ind: 730
Gået hjem: 1600
Overtid: 870
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/426061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档