正規表現:すべての代替文字が数字の場合

正規表現:すべての代替文字が数字の場合

egrep文字も数字の行を確認するLinuxコマンドを作成しようとしています。

私はこうする:

egrep "^(.[0-9])*$" text.txt 

ただし、この方法は i) 空行と ii) 奇数文字では失敗します。123唯一の奇数位置は実際には数字であるため、一致する必要がありますが、そうではありません。

有効なモード:

a2b4c6
000000
123
a1b
a1b2c3q

無効なモード:

aaaa
0a0a0a
a1bq

私がどんなミスをしたのか誰が教えてもらえますか?

編集:唯一の制限は、各代替文字が偶数でなければならないことです。全行の長さは偶数でも奇数でもよい。上記のコマンドは偶数の長さのみを許可します(例:1234、a1b2c3など)。しかし、123、a1bも有効ですが、これは一致しません。私の質問は、この問題をどのように処理するかです。

ベストアンサー1

正規表現は*「0以上」を意味するため、空行に一致するため、^(.[0-9])*$空行に一致します。+(「1つ以上の一致」)を使用してこの問題を解決できます。

次の問題は、1行に偶数の文字がある場合、一致する文字がないことです。これを防ぐには、grep最後に0または1文字が許可されていることがわかります。

grep -E "^(.[0-9])+.?$" 

たとえば、

$ cat file 
a2b4c6
000000


123
aaaa
0a0a0a

$ grep -E "^(.[0-9])+.?$" file
a2b4c6
000000
123

おすすめ記事