特定の形式をgrepする方法

特定の形式をgrepする方法

次の文字列を含む .txt ファイルがあります。

ANEW.0000+0530-0015+0530_NEW
ANEW.0000+0530-0100+0530_NEW
ANEW.0045+0530-0100+0530_NEW
ANEW.0100+0530-0115+0530_NEW
ANEW.0100+0530-0200+0530_NEW
ANEW.0145+0530-0200+0530_NEW
ANEW.0200+0530-0215+0530_NEW
ANEW.0200+0530-0300+0530_NEW
ANEW.0245+0530-0300+0530_NEW
ANEW.0300+0530-0315+0530_NEW
ANEW.0300+0530-0400+0530_NEW
ANEW.0345+0530-0400+0530_NEW
ANEW.0400+0530-0415+0530_NEW
ANEW.0400+0530-0500+0530_NEW
ANEW.0445+0530-0500+0530_NEW
ANEW.0500+0530-0515+0530_NEW
ANEW.0500+0530-0600+0530_NEW
ANEW.0545+0530-0600+0530_NEW
ANEW.0600+0530-0615+0530_NEW
ANEW.0600+0530-0700+0530_NEW
ANEW.0645+0530-0700+0530_NEW
ANEW.0700+0530-0715+0530_NEW
ANEW.0700+0530-0800+0530_NEW
ANEW.0745+0530-0800+0530_NEW
ANEW.0800+0530-0815+0530_NEW
ANEW.0800+0530-0900+0530_NEW
ANEW.0845+0530-0900+0530_NEW
ANEW.0900+0530-0915+0530_NEW
ANEW.0900+0530-1000+0530_NEW
ANEW.0945+0530-1000+0530_NEW

0400+0530-0500+0530,0500+0530-0600+0530などを含むすべての行をgrepする必要があります。誰かが希望の出力を得るためにgrepコマンドを使用する方法を教えてもらえますか?

私は以下を試しました。しかし、うまくいきません。

cat myfile.txt |grep "*00+0530-*00+0530*"

ベストアンサー1

4桁の部分文字列がタイムスタンプであると仮定すると、15分または15分にタイムスタンプを含む行を除外したいようです。

これを行うには、grep次のように使用します。

grep -v -e '[0-9][0-9]15' -e '[0-9][0-9]45' file.txt

またはより短い、

grep -v '[0-9][0-9][14]5' file.txt

ここにある2つの正規表現は、四半期から四半期までの行の任意の位置でタイムスタンプと一致します。両方の式のいずれかが一致する場合、その行は次のようになります。いいえoptions によってファイルから抽出され-v、これは一致の意味を反転します。

質問の入力を考慮すると、このコマンドの結果は次のようになります。

ANEW.0000+0530-0100+0530_NEW
ANEW.0100+0530-0200+0530_NEW
ANEW.0200+0530-0300+0530_NEW
ANEW.0300+0530-0400+0530_NEW
ANEW.0400+0530-0500+0530_NEW
ANEW.0500+0530-0600+0530_NEW
ANEW.0600+0530-0700+0530_NEW
ANEW.0700+0530-0800+0530_NEW
ANEW.0800+0530-0900+0530_NEW
ANEW.0900+0530-1000+0530_NEW

式の問題は、*基本正規表現の先頭のaがliteralと一致し、*データにそのような文字がないことです。また、0*末尾の文字は00回以上一致し、-*中間文字はダッシュで0回以上一致します。

おすすめ記事