5分以上egrep正規表現

5分以上egrep正規表現

私のテキストファイルには、次の時間形式があります。

       `1` equals one second.
    `5|01` equals five minutes and one seconds.
   `13|01` equals thirteen minutes and one seconds.
`21|12|01` equals 21 hours, 12 minutes, and 1 seconds.

5分より長いエントリをegrepする必要があります。次の正規表現を使用していますが、次の時間を除外しているため機能しません13|00

'[[:space:]0-9][[:space:]0-9][[:space:]|][[:space:]0-9][[:space:]6-9][|][0-9][0-9]'

例は次のとおりです。

 lite on       1
 lite on      01
 lite on    5|22
 lite on   23|14
 lite on 1|14|23

ベストアンサー1

空白(後で直接埋めることができます)と前の0(もう一度)を無視してください。

[5-9]\|[0-9]+
[1-9][0-9]\|[0-9]+
[0-9]+\|[0-9]+\|[0-9]+

範囲内の時間

[5,10) minutes
[10,99) minutes
1+ hours

それぞれ。

(...|...)したがって、開始と終了に十分な固定がある一致グループに参加してください(したがって、または一致14|59しません1|00|00)。

これは

grep -E 'on +([5-9]\|[0-9]+|[1-9][0-9]\|[0-9]+|[0-9]+\|[0-9]+\|[0-9]+) *$'

秒は3つの正規表現に共通しているため、これを少し単純化できます。

grep -E 'on +([5-9]|[1-9][0-9]|[0-9]+\|[0-9]+)\|[0-9]+ *$'

おすすめ記事