查找文件后查找最后输入的数字

查找文件后查找最后输入的数字

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

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,则必须打印数字(如果有差异)希望你理解我的问题

答案1

如果这是Overtid:您想要填写的内容,则可以执行以下操作:

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)是为了确保我们在到达数据的Overtid: 0第一行时不会得到虚假的输出。Dato:

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

输出您的数据:

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

相关内容