2016-10-22 20 views
1

grepを使って正確に3 "w"、5 "t"と "v"を含まない行を見つける方法はありますか?正規表現でgrep検索

Input: 
---------- 
aabbccddd4444 
wccwwtttjjttuu 
zzxxxwwwmmmnnnn 

Expected output: 
---------------- 
wccwwtttjjttuu 

ので "wccwwtttjjttuu" で、私たちは3 "W"、5 "tの" なし "V"

感謝を持っています!バージョンは{3}正規表現構文をサポートする拡張された正規表現とawk

$ grep -xE '([^w]*w){3}[^w]*' ip.txt | grep -xE '([^t]*t){5}[^t]*' | grep -v 'v' 
wccwwtttjjttuu 


、いないことを確認-xオプションの試合だけ全体のラインを使用してgrep

答えて

4
$ cat ip.txt 
aabbccddd4444 
wccwwtttjjttuu 
wvccwwtttjjttuu 
zzxxxwwwmmmnnnn 
ccwwtttjjttuu 


、。私はそれが価値が要素の数ですですので

  • @w, @t, @v配列は、それぞれ
  • $#w@wで最後の要素のインデックスを与えるすべてのw, t, v文字が含まれていperl

    $ perl -ne '(@w)=/w/g; (@t)=/t/g; (@v)=/v/g; print if $#w==2 && $#t==4 && $#v==-1' ip.txt 
    wccwwtttjjttuu 
    
    GNU awk 4.1.3

    $ awk '/^([^w]*w){3}[^w]*$/ && /^([^t]*t){5}[^t]*$/ && !/v/' ip.txt 
    wccwwtttjjttuu 
    


    上でテストマイナス1

+0

ありがとうございました!それは動作しています:) –