fold -sオプション

『天使のくれた時間』(2000米)ニコラス・ケイジ、ティア・レオーニ
大手金融会社社長という億万長者で悠々自適な独身ライフを満喫していた男が、天使のいたずらにより、人生を左右する分岐点で、違う道を選択してた場合の体験をさせられます。突然貧乏になり家族ができた男は、人生の価値をどのように考えるのか。
邦題は『天使のくれた時間』なのですが、原題は『The Family Man』。日本人の私からすると、邦題の方が美しく感じます。一方、原題は直接過ぎるかなあという印象です。あの『アナと雪の女王』も原題は『FROZEN』。ん〜、どうなんでしょうか。

Linuxのmanの和訳ですが、邦題タイトルのように、直接的じゃないなあと思うことがよくあります。「foldコマンド」で使ったfoldのmanにも、説明が良く分からないオプションがありました。

~$ man fold
(省略)
-s, --spaces
              空白の位置で折り返す
(省略)

-sオプション。

よく分からない場合は、ソースです。オープンソースは、中身が調べることができるって所が素晴らしいです。

~$ apt-get source coreutils
~$ cd coreutils-8.23
~/coreutils-8.23$ 

foldコマンドのソースは、fold.cだと思いますので、findします。

~/coreutils-8.23$ find -name fold.c
./src/fold.c
~/coreutils-8.23$ 

-sオプションのcase文をgrepしてみます。

~/coreutils-8.23$ grep -A1 'case.*s.:' src/fold.c
        case 's':		/* Break at word boundaries. */
          break_spaces = true;
~/coreutils-8.23$ 

単語の境界で区切るようです。では、試してみましょう。
単語を使いたいので、/usr/share/dict/wordsからサンプルを生成します。

~$ shuf /usr/share/dict/words | head | pr -t5J | tee sample.txt
plum	skeptically	uniquely	minion's	Vera's
glockenspiels	lumberyard	larch's	Douala's	Jaguar's
~$ 

最大桁数を確認します。

~$ wc -L sample.txt
64 sample.txt

最大桁数の手前ぐらいで改行を入れてみましょう。

~$ fold -w60 sample.txt
plum	skeptically	uniquely	minion's	Vera
's
glockenspiels	lumberyard	larch's	Douala's	Jagu
ar's

では、-sオプションを使ってみます。-w60のwの前に入れます。

~$ fold -sw60 sample.txt
plum	skeptically	uniquely	minion's	
Vera's
glockenspiels	lumberyard	larch's	Douala's	
Jaguar's
~$ 

単語が分断されず、単語の直前の空白で改行が入りました。
日本語の「空白の位置で折り返す」とは、こういう意味だったのですね。

One response to “fold -sオプション

  1. Wowza, problem solved like it never hapnpeed.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA