GNU/Linux >> Linux の 問題 >  >> Linux

5つまたは6つの数字のみを含む行のGrep?

5つまたは6つの数字のみを含む行をどのようにgrepしますか?このようなもの。

ケース1(先頭にスペースがあります)

           10      2       12      1       13

ケース2(先頭にスペースがない)

   1       2       3       4       5        6

このようなことがうまくいくと思いました。

grep -E '[0-9]{5}'

承認された回答:

grep -E '[0-9]{5}' 少なくとも5桁の数字を探しています。必要なのは、少なくとも1桁の数字が5つあることです:

grep -E '[0-9]+([^0-9]+[0-9]+){4}'
  • [0-9]+ –少なくとも1桁の数字
  • [^0-9]+[0-9]+ –少なくとも1つの数字があり、その前に少なくとも1つの数字以外の文字が付いている数字。次に、これを4回繰り返して、数字以外で区切られた5つの数字を取得します。
  • 要件が正確に5の場合、この正規表現を[^0-9]で囲むことをお勧めします。 行全体が一致するようにします(もちろん、アンカーと一致します)。
  • ここで必要なものによって異なります(1,2,3,4,6を実行します) 資格がありますか?)、他のセパレーターを見るかもしれません。たとえば、適切な科学的記数法の実数は次のようになります。[+-]?(([0-9]+(.[0-9]+)?)|([0-9]?.[0-9]+))([eE][+-][0-9]+)? したがって、区切り文字に.を含めることはできません。 、e 、など。mikeservのように、空白のみにすることができます。 ノート。または、CSVレコードの場合は、カンマである可能性があります。または、ロケールによっては、コンマが小数点記号になります。 [^0-9]を変更します 必要に応じて。

Linux
  1. ファイルがまだ存在しない場合にのみファイルに行を追加する

  2. 複数行検索用の正規表現 (grep) が必要

  3. 行番号のない Bash 履歴

  1. GREPに数値のみを選択させる方法は?

  2. まだファイルにない場合にのみ、ファイルに行を追加します

  3. Grep:1 行あたりの一致数をカウントする

  1. Linux で grep を使用して DOS 行末 (CRLF) を含むファイルを検索するにはどうすればよいですか?

  2. 最初の一致でのみ挿入する sed

  3. Linuxコマンドライン:du ---各ディレクトリの合計のみを表示する方法