
単語リストがあり、数字のみを含む各テキスト行を新しいファイルに抽出したいと思います。私は何をすべきですか?
答え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
それはすべて私たちが探している「数字」によって異なります。
答え2
by 文字を含む行を削除sed
し、出力を別のファイルに入れます。
sed '/[a-z]/Id' yourInputFile > yourOutputFile
または、元のファイルをそのまま変更するには:
sed -i '/[a-z]/Id' yourInputFile