次の文字列を含む .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*
末尾の文字は0
0回以上一致し、-*
中間文字はダッシュで0回以上一致します。
答え2
この試み
grep '00+0530-..00+0530' myfile.txt
.
すべての文字に対して、検索文字列に点()が挿入されます。あなたは必要ありませんcat
。