私のテキストファイルには、次の時間形式があります。
`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]+ *$'