2014-06-13 77 views
0

在awk中的特定字段的正則表達式我可以搜索一個字段的值等:搜索使用AWK

$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; $2=="eaae" {print $0};' 
aa,bb,cc 
dd,eaae,ff 

,我還可以通過正則表達式像

$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; /[a]{2}/ {print $0};' 
aa,bb,cc 
dd,eaae,ff 

我可以強制AWK搜索將正則表達式搜索應用於特定字段?我正在尋找類似

$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; $2==/[a]{2}/ {print $0};' 

期待的結果:

dd,eaae,ff 

任何人都知道如何用awk辦呢?

接受響應 - 操作員 「〜」(感謝hek2mgl):

$ echo -e "aa,bb,cc\ndd,eaae,ff" | awk 'BEGIN{FS=",";}; $2 ~ /[a]{2}/ {print $0};' 

回答

5

您可以使用:

$2 ~ /REGEX/ {ACTION} 

如果正則表達式僅應適用於第二個字段(例如)。


你的情況,這將導致:

awk -F, '$2 ~ /^[a]{2}$/' <<< "aa,bb,cc\ndd,eaae,ff" 

你也許會奇怪,爲什麼我剛纔在awk程序的正則表達式並沒有print。這是因爲你的動作是print $0 - 打印當前行 - 這是awk中的默認行爲。