blog

Tech|LinuxのコマンドラインでWordleの問題を解く

Linuxのgrepとfgrepコマンドを使って、お気に入りの単語当てゲームに勝利しましょう。...

Oct 13, 2025 · 4 min. read
シェア

Linuxのgrepとfgrepコマンドを使って、お気に入りの単語を使った推理ゲームに勝ちましょう。

私は最近、ランダムに5文字の単語を当てるチャンスが6回あるオンライン単語当てゲームに少し夢中になっています。単語は毎日変わり、1日1回しかプレイできません。灰色はその文字が謎の単語に出てこないことを意味し、黄色はその文字が単語に出てくるがその位置にはないことを意味し、緑はその文字が単語の正しい位置に出てくることを意味します。

Linuxのコマンドラインを使ってWordleのような推理ゲームをする方法を紹介します。私はこの方法で1月6日のパズルを解きました:

最初の試み

  1. $ grep '^[a-z][a-z][a-z][a-z][a-z]$' /usr/share/dict/words > myguess

grepコマンドは正規表現を使って検索を行います。正規表現を使ってできることはたくさんありますが、Wordleで役立つのは基本的なことだけです。は行頭、$は行末を表します。その間に[a-z]を5つ指定し、これはaからzまでの小文字を表します。

  1. $ wc -l myguess
  2. myguess

このリストの中から、ランダムに5文字の単語を選びました: acres.他の文字は灰色なので、今日の単語には存在しないことがわかります。

二度目の挑戦。

aを含むすべての単語のリストを得るには、fgrepコマンドを使います。fgrepはgrepと同じようにテキストを検索しますが、正規表現は使いません:

  1. $ fgrep a myguess > myguess2
  1. $ wc -l myguess myguess2
  2. 15034 myguess
  3. 6634 myguess2
  4. 21668 total
  1. $ fgrep a myguess | grep '^[b-z]' > myguess2
  2. $ wc -l myguess myguess2
  3. 15034 myguess
  4. 5566 myguess2
  5. 20600 total

しかし、この謎の単語にはc、r、e、sの文字も含まれていないことが分かっています:

  1. $ fgrep a myguess | grep '^[b-z]' | grep -v '[cres]' > myguess2
  2. $ wc -l myguess myguess2
  3. myguess
  4. 1257 myguess2

vオプションは逆検索を意味するので、grepは正規表現[cres]または一文字のc、r、e、sにマッチしない行だけを返します。この追加grepコマンドで、次の推測をかなり絞り込み、どこかにaがあり、最初の位置にはなく、c、r、e、sを含まない単語を1200個に絞りました。

このリストをチェックした後、私はbalmyという単語を試してみることにしました。

三度目の挑戦。

リストの中で次に出てくる可能性のある単語を調べるには、別のgrepコマンドを使います。その単語がbaで始まることは知っているので、そこから検索を始めることができます:

  1. $ grep '^ba' myguess2 > myguess3
  2. $ wc -l myguess3
  3. 77 myguess3

わずか77語です! 3桁目に加えてlを含む単語を探せば、さらに絞り込めますね:

  1. $ grep '^ba[^l]' myguess2 > myguess3
  2. $ wc -l myguess3
  3. 61 myguess3
  1. $ grep '^ba[^l]' myguess2 | fgrep l > myguess3
  2. $ wc -l myguess3
  3. 10 myguess3
  1. $ grep '^ba[^l]' myguess2 | fgrep l | grep -v '[my]' > myguess3
  2. $ wc -l myguess3
  3. 7 myguess3
  1. $ cat myguess3

私は次の推測のために可能性のある単語としてbanalを選び、それがたまたま正解でした。

正規表現の威力

Linuxのコマンドラインには、実際の作業を支援する強力なツールが用意されています。grepコマンドとfgrepコマンドは、単語のリストをスキャンする際に非常に柔軟な機能を提供します。単語ベースの推測ゲームでは、grepが15,000の単語の可能性のリストを識別するのに役立ちました。どの文字が謎の単語に出てきて、どの文字がそうでないかを推測して知った後、grepとfgrepは選択肢を1,200単語に絞り込むのに役立ち、7単語だけが残りました。これがコマンドラインの力です。

Read next