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

Bash +正規表現で名前を確認しますか?

次の正規表現がvalidを出力するのはなぜですか 、名前がhdpworker01の場合 ?

name=hdpworker01
[[ $name =~ worker[[:digit:]] ]] && echo valid

私がやろうとしているのは、validを印刷することです 名前がworker[0-999]と一致する場合のみ 。

期待される結果の例:

  • name=worker01の場合 :valid
  • name=hdpworker01の場合 :出力なし

承認された回答:

正規表現は、デフォルトでは文字列の先頭または末尾に固定されていません。これは、たとえばファイル名のグロブパターン。これは、式が指定された文字列のどこにでも一致する可能性があることを意味します。

式を文字列の先頭に固定するには、

を使用します。
^worker[[:digit:]]

さらに文字列の末尾に固定し、1〜3桁の数字を使用できるようにするには、

を使用します。
^worker[[:digit:]]{1,3}$

worker10と一致させたい場合 ただし、worker01ではありません またはworker003 (ゼロで埋められた数字はありません)、使用

^worker([0-9]|[1-9][0-9]{1,2})$

Linux
  1. Bash スクリプトのスクリプト ファイル名を知るにはどうすればよいですか?

  2. ファイル名が Bash でアンダースコア _ で正しく印刷されない

  3. Bashで受信したシグナル名を特定する

  1. 引数が bash シェルで有効な日付かどうかを確認する

  2. Bashで有効な識別子(関数、変数など)のルールは何ですか?

  3. Bashでファイル名の末尾の文字を削除するには?

  1. Bashシェル関数での循環名参照、ただしKshではない?

  2. Bashで二重文字を見つけるための正規表現

  3. sed による正規表現