2016-03-27 11 views
0

我有一堆文件,有逗號分隔字段,我在redhat linux上。我執行下面的awk命令是這樣的:在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} regxp的一部分,應該只fd=1d8fd=1d3匹配,但它似乎符合fd=1d7d7和「FD = 1d8d8」也。請讓我知道如果我在這裏失去了一些東西。

預先感謝 問候

+0

如果您需要'--re-interval'標誌來啓用RE間隔,那麼您正在使用一個非常舊版本的gawk,並獲得一個新版本。另外,'{print}'是給定真實條件的默認操作,不需要明確寫入。 –

回答

1

正則表達式匹配查找字符串,而不是整個字符串;要找到完全匹配,您必須將字符串的開始(^)和結束($)作爲錨點。 [0-9]{1}相當於[0-9](從09的一個字符)。

I.e. fd=1d[0-9]{1}將會找到blahfd=1d8732,匹配區域爲fd=1d8; ^fd=1d[0-9]$將不匹配,但會匹配fd=1d8

+0

感謝Amadan,工作! – Kishore

相關問題