最も長い英単語は何か(wc/sed)

最も長い英単語はTitinというタンパク質の正式名称で、18万文字もあるそうです。
http://englishlands.net/the-longest-word/

今回はあくまで/usr/share/dict/wordsに載っている英単語の中ですが、一番長い単語名を調べてみたいと思います。
wc -Lコマンドで、テキスト中の最も長い行の長さを確認できます。

~$ wc -L /usr/share/dict/words
23 /usr/share/dict/words
~$ 

23文字と分かったところで、単語そのものがわかりません。
このような時はそのまま考えます。
つまり一行が23文字存在する箇所を抽出すれば良いのです。
正規表現を使いますので、sedの出番です。
23文字なので任意の1文字(.) x 23にマッチする文字列を表示します。
これを実現する正規表現は、

^.\{23\}$

となります。

テキストファイルを指定して該当箇所が表示されるか確認しましょう。

~$ sed -ne '/^.\{23\}$/p' /usr/share/dict/words
electroencephalograph's
~$

23文字の単語が表示されました。
sedは{}を使う場合\をつけないとなりません。perlの場合は{}そのままで使えますが、同じことを行うには、以下のように記述しなければなりません。

~$ perl -ne 'print if /^.{23}$/' /usr/share/dict/words
electroencephalograph's
~$ 

sedを使うと記述が少なく済んで、perlを使うと正規表現が少なく済みます。
どちらを使うかは好みとなります。

コメント

タイトルとURLをコピーしました