0

これが基本的なことだとは思いますが、どこが間違っていて、これまで正規表現を書いたことがないのかわかりません。

コマンドからいくつかの出力をgrepする必要があります

cmd | grep '[0-9]+:[0-9]+:[0-9]+:[0-9]+'

フォーマットの情報をgrepする必要があります

dummy dummy 4:9:93:022 dummy 

それ、どうやったら出来るの?どこが悪いのか教えてください.....

出力は次の形式になります

`-+- policy='round-robin 0' prio=2 status=active
|- 6:0:0:136 sdip 135:144 active ready running
`- 5:0:0:136 sdle 67:448  active ready running

その6:0:0:136...に基づいてのみ削除する必要があります。

4

3 に答える 3

3

plus修飾子は、「拡張正規表現」構文の一部です。これ:

a+

「1つ以上の「a」文字」を意味し、この基本的な表現の省略形です。

aa*

従来grep、基本的な正規表現をegrepサポートし、拡張構文をサポートしています。だからこれを行う:

cmd | egrep '[0-9]+:[0-9]+:[0-9]+:[0-9]+'

またはこれ(これは同じことです):

cmd | grep -E '[0-9]+:[0-9]+:[0-9]+:[0-9]+'
于 2012-07-12T21:05:44.113 に答える
3

それぞれ+を円記号でエスケープするか、拡張正規表現オプション(-Eまたは--extended-regexp)を使用する必要があります。

cmd | grep '[0-9]\+:[0-9]\+:[0-9]\+:[0-9]\+'

また:

cmd | grep -E '[0-9]+:[0-9]+:[0-9]+:[0-9]+'

基本正規表現と拡張正規表現基本正規表現では、
メタ文字、、、、、、およびは特別な意味を失います。代わりに、バックスラッシュバージョン、、、、、、およびを使用してください。?+{|()\?\+\{\|\(\)

于 2012-07-12T21:06:51.010 に答える
1

これはうまくいくはずです

cmd | grep -E '([0-9]+:){3}[0-9]+'
于 2012-07-12T21:11:49.380 に答える