Lynx または elink がスペースと改行文字を解釈するように強制する

Lynx または elink がスペースと改行文字を解釈するように強制する

次のコマンドとその結果を考慮してください。

$ 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最初の空白はスキップされ、空白行と空白のみを含む末尾の行はすべてスキップされます。

すべてのスペースと改行を強制的に適用またはlynx解釈する方法はありますか?elinks私は彼らのマンページで明らかなものを見ることができません。

sed(表示後またはその他の項目によって抑制される一時文字を使用する場合は除外されます。)tr

答え1

次のコマンドを使用して、この動作を変更するようにLynxを設定できます。COLLAPSE_BR_TAGSlynx.cfgのような設定ファイルから:

FALSEに設定すると、COLLAPSE_BR_TAGSLynxはシリアルBRタグを縮小しません。 TRUE に設定すると、2 つ以上の同時 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'

関連情報