次のコマンドとその結果を考慮してください。
$ 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_TAGS
LynxはシリアルBRタグを縮小しません。 TRUE に設定すると、2 つ以上の同時 BR が単一の改行に縮小されます。 HTMLに追加の空行を挿入する効率的な方法は、改行文字のみを含むPREブロックを使用することです。デフォルト値は
COLLAPSE_BR_TAGS
TRUEです。
答え2
Lynx v2.8.9(リリース済み2018年7月8日)trim_blank_lines
空白行をトリミングするかどうかを制御するオプションが追加されました。
collapse_br_tags
とtrim_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'