okkyの日記: man の出力から a^Ha とか _^Hx とかを無くす方法 5
a^Ha は a という意味。_^Hx は xに下線 という意味。
この手の「強調」を消すオプションだったか方法だったかがあった気がするのだが…前にやったときは20世紀だったこともあってまるっきりやり方を思い出せない。
man ページを man ⇒ groff ⇒ troff と手繰ってみたりもしたがピンとこない。あれ~??
駄目だ、これ以上は調べるより sed のスクリプトを書いたほうが早い…というわけで gnu-sed 用のを書いてしまいました。もしかしたら普通の sed でも動くかもしれませんが、判りません。
#! /usr/bin/sed -f
s/\([[:print:]]\)[[:cntrl:]]\1/\1/g
s/_[[:cntrl:]]\([[:print:]]\)/\1/g
おっかしいなぁ…確かになんか手があった気がするんだが…
-------
追記: pager の問題ではない。つまり less の問題ではない。
どうせless とかでは Bold とかでちゃんと出るのだ。それはそれでいい。
私はテキスト全体をコピーし、さらにそれを複数バージョンくっつけて、それぞれの項目がどういう意味で、どういう振る舞いのときに何を注目すればいいのか、というドキュメントを書く、そのためのベースにしたいのだ。sarをExcelシートにする強引なスクリプトが書けたのだが、そのスクリプトを周りに使わせるためのドキュメンテーションは、プログラム自身を書くのの何倍も大変なんだよ。
# だって、sarの出力を Excel にするのに、各計測値の「意味」なんか気にしなくて良いからね。
で、すでにげんなりするほどの項目数の前に、どうしようかと悩んでいるわけだ。「これ、どうやって書いたら楽だろう」
# Word のいうこと気かなさっぷりは昨日さんざん経験した。
それは、、、 (スコア:1)
colcrtですね。
で、普通に読める奴が出てくると思います。
#FreeBSD固有だったらごめんください。
Re:それは、、、 (スコア:1)
col(1)もCygwinでは同じ問題があるようです。sed使えってことでしょうかね。非posixな書き方しか知らないよ。
^H生打ちの時はその前に^Vを使うのははviだけでなくシェルインタープリタでも事情は一緒。kshほかでモードを変更していなければ。
col? (スコア:1)
col [freebsd.org]というコマンドがありましたが,これのことでしょうか。
sedコマンドですが,
POSIX.2以前のシステムでは,こんな感じでやっていました。
あるいは、面倒くさくなるとこんな感じ:
ただし、^Hは Control-H を生で入れる(vi ならControl-V Control-H、emacsならControl-Q Control-H)。
man man | sed 's/[ -~]^H//g' outfile (スコア:1)
Hewlett-Packardみたいにmanpageをオンラインで示していてもうっかりだったりすることもありますよね。
でもおまじないはみつからなかったのですべて言い訳になってしまいました。
Re:man man | sed 's/[ -~]^H//g' > outfile (スコア:1)
サブジェクト内の文字エンティティをエスケープするのを失念していたよ。
誤 man man | sed 's/[ -~]^H//g' outfile
正 man man | sed 's/[ -~]^H//g' > outfile