gpt4 book ai didi

bash - 如何将 org 文件中的最新条目输出并格式化到终端?

转载 作者:行者123 更新时间:2023-11-29 09:22:31 25 4
gpt4 key购买 nike

我使用 emacs 和结构如下的 org 文件记录每日笔记:

#+SEQ_TODO: TODO(t) IN_PROGRESS(p) BLOCKED(b) ON_HOLD(h) OPEN(o) QA(q) | DONE(d) CANCELLED(c)

* Notes <2019-04-19 Fri>
** To do:
*** Item 1
*** Item 2
* Notes <2019-04-18 Thu>
** To do:
*** Item 1
*** Item 2
*** Item 3
*** Item 4
etc.

我想在终端中输出最新条目(可能通过 grep、cat、sed 或其他方式),例如,如果我在终端中键入 todo,它将输出:

* Notes <2019-04-19 Fri>
** To do:
*** Item 1
*** Item 2

我已经尝试过 grep -A 5 -i "2019-04-18"~/Documentes/notes.org 之类的操作,但不想手动指定要执行的行数输出(列表可以是 2 行或 10 行)。我还尝试了一些 sed 并尝试在单词之间输出,但运气不佳。

最佳答案

假设最新条目总是在顶部:

$ awk '(c+=/^\* Notes/)>1{exit} c' file
* Notes <2019-04-19 Fri>
** To do:
*** Item 1
*** Item 2

对于文件中的每一行;如果该行匹配 ^\* Notes,则将 c 加 1;如果 c 大于 1,则退出;如果 c 大于零,则打印该行。

而且,如果在 Notes 之前只有一个星号后跟一个空格,您可以从正则表达式中删除 Notes:

awk '(c+=/^\* /)>1{exit} c' file

关于bash - 如何将 org 文件中的最新条目输出并格式化到终端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55797089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com