如何让 Groff 不打印空行?

问题描述 投票:0回答:3

距离在论坛发帖已经有一段时间了。 我一直在尝试在 bash 或 zsh 中找到解决方案 编程语言允许我将表格分类到文件中,稍后我可以使用文本字符串(包括时间和日期信息)进行更新,以跟踪我正在执行的任务。 在这样做的过程中,我开始研究 groff 的表, 它生成表。 我喜欢 groff,但我遇到的问题之一是它在表格前打印 7 个空行,在表格后打印 53 个空行。 这是 table.me 文件:

.TS
allbox;
c s s s 
c c c c.
work hours
             
.TE

我将其显示到终端的命令是:

tbl Documents/tempdir/tmp18=.md| groff -me -T ascii

我在 os x Majove 10.14.6 上的 kitty 终端上的 zsh shell 中运行这些命令

这是输出:








+--------------+
| work hours   |
+--+---+---+---+
|  |   |   |   |
+--+---+---+---+























































为什么有这么多空白?为什么有这么多换行符? 我尝试用

修剪这些行
tbl Documents/tempdir/tmp18=.md| groff -me -T ascii | sed -e 's/*[  ]*//'

groff 总是持续产生这么多换行符吗? 我已经尝试使用头和尾来隔离表,但这种方法的主要问题是在更改表时我还必须更改头和尾的值。有没有办法得到 groff 打印到标准输出而不进行此操作并后置空行?

string bash datatables stdout groff
3个回答
1
投票

格罗夫填满了这一页。默认页面为 11 英寸,因此有相当多的空白。有多种可能性:

  • 将页面长度设置为较小的值:
.pl 10v
  • 删除所有空行:
tbl t.tbl | groff -mwww -T ascii | sed '/^\s*$/d'
  • 从文件末尾删除它们:
tbl t.tbl | groff -mwww -T ascii | sed -e :a -e '/^\n*$/{$d;N;ba' -e '}'

0
投票

我认为我没有安装 groff,(不幸的是我在 Cygwin atm)但是...

tbl Documents/tempdir/tmp18=.md | groff -me -T ascii | tr -s ' ' | tr -d '\n'

如果我不了解的话,阅读这个网站会让我觉得我是唯一一个还记得 tr 的人;甚至更重要的是编辑。


0
投票

groff(1)
文档建议使用

来做到这一点
.pl \n[nl]u

将页面长度设置为当前垂直位置。

例如,您可以拥有如下管道:

{ tbl foo.md; printf %s '.pl \n[nl]u'; } | groff -Tutf8
© www.soinside.com 2019 - 2024. All rights reserved.