强制 lynx 或 elinks 解释空格和换行符

强制 lynx 或 elinks 解释空格和换行符

考虑以下命令及其结果:

$ echo "<br/> <br/>a<br/>b<br/>c<br/><br/> <br/>"|lynx -dump -stdin

   a
   b
   c
$ echo "<br/> <br/>a<br/>b<br/>c<br/><br/> <br/>"|elinks -dump
   a
   b
   c

两者都不会打印正确的行数:elinks跳过第一个空白,并且都跳过空白行和仅包含空白的尾随行。

有没有办法强制lynxelinks解释所有空格和换行符?我在他们的联机帮助页中没有看到任何明显的内容。

(我的意思是,除了使用显示后被sed或或其他内容抑制的临时字符之外。)tr

答案1

Lynx 可以配置为使用以下命令修改此行为COLLAPSE_BR_TAGS在配置文件中,例如lynx.cfg:

如果COLLAPSE_BR_TAGS设置为 FALSE,Lynx 将不会折叠串行 BR 标签。如果设置为 TRUE,两个或多个并发 BR 将折叠为单个换行符。请注意,在 HTML 中插入额外空行的有效方法是通过 PRE 块,该块中仅包含换行符。

默认值为 COLLAPSE_BR_TAGSTRUE

答案2

Lynx v2.8.9(已发布2018 年 7 月 8 日)添加了trim_blank_lines控制是否修剪空白行的选项。

collapse_br_tagstrim_blank_lines选项设置为错误的1将保留空白行。

1 Lynx 识别“1”、“+”、“on”和“true”为真值,“0”、“-”、“off”和“false”为假值。
https://www.mankier.com/1/lynx

例子:

echo "<br/> <br/>a<br/>b<br/>c<br/><br/> <br/>d" \
| lynx -stdin -collapse_br_tags=0 -trim_blank_lines=0 -nomargins=1 -dump

结果:



a
b
c


d

不幸的是,您将得到虚假的尾随换行符,如上面的输出所示。

幸运的是,这很容易通过额外的修复来解决sed 管道阶段删除 EOF 处的多个换行符:

echo "<br/> <br/>a<br/>b<br/>c<br/><br/> <br/>d" \
| lynx -stdin -collapse_br_tags=0 -trim_blank_lines=0 -nomargins=1 -dump \
| sed ':loop; /^\n*$/{$d;N;}; /\n$/b loop'

相关内容