如果标题不清楚,请原谅。我有一个由calcurse
生成的文本文件,用于列出我的日历事件。文件的内容如下:
01/23/23:
* Homework
* Sports
时间并不重要,我只想看到事件。关键是我想让它显示在我的窗口管理器(i3 wm)中。我正在考虑创建一个按钮,在单击时执行脚本(可能使用polybar
)。这个脚本将显示文本文件的第二行;点击后,脚本将显示第3行,依此类推......显示单行的原因是i3 bar的宽度较小,因此只能显示1行(1个事件)。
我正在考虑使用awk
,我可以测试以下内容:
head -1 myfile | awk '{print $1}' gives 01/23/23:
head -2 myfile | awk '{print $2}' gives Homework
但是
head -3 myfile | awk '{print $3}'
不生产体育。
有没有人能帮我解决这个问题?另外,对我的使用情况有任何建议都将不胜感激。
2条答案
按热度按时间mwngjboj1#
不需要
head
:您没有看到代码中的
Sports
输出,因为print $3
试图打印只有*
和Sports
两个字段的行的第3个字段。ccrfmcuu2#
这里有一点题外话,但是-
head
查看的是行。awk
(在您的示例中)查看的是head
传递的每一行的字段。使用
然后
这返回日期,不是因为
$1
引用了第一个 * 行 *,而是它所接收的only行的第一个 * 字段 *。这再次涉及 * 字段 *。
它读取第一行,其中日期是
$1
,但是没有$2
,尽管它应该打印一个空行。head -2
阻止它处理第3行,否则它也会打印Sports
。在这两行中,$1
都是星号。这些行都没有第三个字段。
按照我的理解,要执行您的建议,您需要一种方法来跟踪每次调用时您想要的行。
如果您能够在这些行中进行传递到
head
的后续调用,那么艾德的awk
解决方案要好得多。