如何系统地替换文件的某些部分?

时间:2016-07-08 09:39:12

标签: awk cron scheduled-tasks selection org-mode

我在Emacs上使用orgmode并希望使用cron调度自动更新orgmode文件的某些部分。

我知道如何让cron作业在我选择的时间运行,但现在我面临选择要更改的文件的某些部分的问题。

我想每天在文件中的某个位置增加数字(比如每天凌晨3点或某事)。

所以说我有文件fruit.org:

* Apple
age: 2
* Bananas 
age: 1
A really bad fruit
* Cranberry
* Death
* Easter
A cool day

我想在年龄之后选择所有数值,然后每天递增它们。我该如何选择和替换。我相信它会涉及正则表达式和一些工具(也许是awk),但我从那时起就相对无能为力。

1 个答案:

答案 0 :(得分:1)

awk中,您可以说:

awk '/age:/ { $2++ } { print }' foo.org

如果您有最新版本的GNU awk,则可以使用选项-i inplace就地编辑该文件。否则,只需执行常规操作,即重定向到临时文件,然后替换原始文件:

awk '/age:/ { $2++ } { print }' foo.org > foo.org.tmp && mv foo.org{.tmp,}

这基本上就是awksed的现场选项在幕后所做的事情。