全体が数値ではなく、すべてのテキスト行を削除します。

全体が数値ではなく、すべてのテキスト行を削除します。

単語リストがあり、数字のみを含む各テキスト行を新しいファイルに抽出したいと思います。私は何をすべきですか?

ベストアンサー1

数値のみを含む行を抽出するには、次の手順を実行します。

$ grep -x '[0-9][0-9]*' words >digits

正規表現は[0-9][0-9]*、少なくとも1つの数字を含むすべての行と一致し、-xオプションではgrep、行全体が与えられた式と一致する必要があります。

ファイルに空白行がない場合は、に変更できますgrep -x '[0-9]*'

ラインが欲しいなら数字、アルファベット文字を含む行を削除します(通常の数値の正規表現を構成するよりも簡単です)。

$ grep -v '[a-zA-Z]' words >numbers

どちらのバリアントも POSIX 文字クラスを使用します。

$ grep -x '[[:digit:]][[:digit:]]*' words >digits
$ grep -v '[[:alpha:]]' words >numbers

修正する: 以下を含む行を選択する場合浮動小数点数(拡張)正規表現を使用できます^[+-]?([0-9]*\.)?[0-9]+$

$ grep -x -E '[+-]?([0-9]*\.)?[0-9]+' words >floats

それはすべて私たちが探している「数字」によって異なります。

おすすめ記事