2011-07-26 13 views
2

私はこの非常に大きな辞書ファイルを各行に1ワードずつ持っています。私がやりたい何Mac端末の大きなテキストファイルを編集する

は3-6文字不適切な名詞を残しているので、これらに基づいて単語を検出することがあります。

  1. 単語が3つの未満の文字である場合、
  2. それを削除します単語が6つの以上の文字であれば、単語が大文字がある場合は単語が単一引用符やスペースを持っている場合、
  3. それを削除
  4. それを削除し、それを削除します。

私はこれを使用:

cat Downloads/en-US/en-US.dic | egrep '[a-z]{3,6}' > Downloads/3-6.txt 

をが、出力が正しくありません。これは3文字以上の大文字を出力しますが、それはこれまでの私の進歩です。

Mac端末でこれを行うにはどうすればいいですか?これを正しく行う方法が必要ですか?

+0

"単語にスペースがある場合は"?言葉には空白が含まれていません。 – You

+0

@You Debatable - 例えば 'car door'(http://dictionary.reference.com/browse/car+door)を参照してください。 :) – Telemachus

+0

@テレマコス:私はそれが2つの言葉だと言いたい。 – You

答えて

1

grepを使用して、保存したい行に一致する正規表現ルールを作成します。端末にman grepと入力すると、grepに関する情報を得ることができます。

2

次のコマンドを実行すると、正確に3〜6で構成されて唯一の単語が-Zの文字を小文字に選択します:

egrep '^[a-z]{3,6}$' /usr/share/dict/words > filtered.txt 

は、出力ファイルの名前を使用して、入力ファイルと/usr/share/dict/words、およびfiltered.txtを交換してください。私はちょうどこれが私のMacで動作することを確認しました。お役に立てれば!

+1

これを拾うには、 '{3,6}'のようなシーケンスはしばしば人を混乱させます。それは私たちの多くが当初考えていたことをしません。正規表現がa-zセットの** 7 **文字と一致すると、失敗しません。 (このように考える: 'limited' *のような7文字の単語は、記述に一致する "az集合の3文字と6文字の間のシーケンスを持つ"。** all **正規表現が要求する場合、 'e'に達したときにマッチします)正規表現ルールを7文字以上の単語にするには、Anirvanのように、次に来るものが空白か行末(または何でも)であることを指定する必要があります。 – Telemachus

関連する問題