2016-03-27 9 views
0

フィールドがカンマで区切られたファイルがたくさんあり、私はredhat Linux上にいます。 regxpの間隔awkの正規表現が期待どおりに動作しない

awk --re-interval -F "," '$4~/xyz:8080\/proxyval\/getPages.do\?fd=1d[0-9]{1}/ { print }' * 

204:1,204,null,xyz:8080/proxyval/getPages.do?fd=1d7d7 ----> dont expect to see this 
204:1,204,null,xyz:8080/proxyval/getPages.do?fd=1d8 
204:1,204,null,xyz:8080/proxyval/getPages.do?fd=1d8d8 ----> dont expect to see this 
204:1,204,null,xyz:8080/proxyval/getPages.do?fd=1d3 

fd=1d[0-9]{1}一部のみfd=1d8fd=1d3と一致する必要がありますが、またfd=1d7d7と「FD = 1d8d8」と一致するようだ:私はこのように、次のawkコマンドを実行しています。もし私がここに何かを見逃しているなら教えてください。正規表現はストリング全体ではなく、文字列を検索一致する よろしく

+0

RE間隔を有効にするために '--re-interval'フラグが必要な場合は、非常に古いバージョンのgawkを使用しています。新しいものを入手してください。また、 '{print}'は真の条件が与えられたときのデフォルトのアクションです。明示的に書く必要はありません。 –

答えて

1

事前に

おかげ。完全一致を見つけるには、文字列の開始(^)と終了($)をアンカーする必要があります。 [0-9]{1}は、[0-9]09の1文字)に相当します。

I.e. fd=1d[0-9]{1}blahfd=1d8732であり、一致領域はfd=1d8であり、 ^fd=1d[0-9]$は一致しませんが、fd=1d8と一致します。

+0

ありがとうアマダン、それは働いた! – Kishore

関連する問題