我试图把头围在sed周围,并认为最好尝试使用简单但有用的工具。在工作中,我希望每次用户运行特定脚本时都在小巧的LCD显示屏上显示数字。我目前正在使用以下语法进行总计:
oldnum=`cut -d ':' -f2 TotalCount.txt`
newnum=`expr $oldnum + 1`
sed -i "s/$oldnum\$/$newnum/g" TotalCount.txt
这将修改其中包含这一行的文件:
总记录:0
现在,我想详细说明一下,并增加从午夜开始的数字,并在每天的23:59:59重置为零。我创建了一个辅助.txt文件,供显示器读取,其中仅一行内容:
今日总录音:0
但是语法不会相同。如何更改上面的sed语法以更改第二个文件的对话框中的数字?
我可以按计划使用sed / bash结合简单的cron作业来更改和重置文件。问题是我无法弄清楚sed的语法来复制与我最初使用的效果相同的效果。任何人都可以帮忙,我已经阅读了好几个小时,终于决定发布此内容,然后煮一杯咖啡。我有一个4行液晶显示器,如果很容易学习语法的话,我很乐意跟踪整个计划中的计数。
sed
由于它正在寻找相同的模式,因此对于在Total Recordings:
或Total Recordings Today:
文件中进行增量都应该可以正常工作。要每天在特定时间重置它,我建议您进行一次cronjob。
0 0 * * * echo \"Total Recordings Today:0\" > /path/to/TotalCount.txt >/dev/null 2>&1
我会鼓励的其他事情是对$( ... )
外壳扩展使用较新的样式语法,并为您的TotalCount.txt
文件创建一个变量。
#!/bin/bash
totals=/path/to/TotalCount.txt
oldnum=$(cut -d ':' -f2 "$totals")
newnum=$((oldnum + 1))
sed -i "s/$oldnum\$/$newnum/g" "$totals"
这样,您可以轻松地将其重用于任何您想使用的地方,正确引用它并简化您的代码。注意:在OS X sed上,就地扩展必须为sed -i ''
。
如有疑问,http://shellcheck.net是一个非常好的工具,可帮助您发现代码中的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句