的匹配部分我有這樣AWK - 如何獲得唯一一個正則表達式
echo abc | awk '$0 ~ "a\(b\)c" {print $0}'
如果我只是想什麼括號,而不是整個行代碼?這顯然非常簡單,並且有很多awk代碼,所以我不想切換到sed或grep或其他東西。由於
的匹配部分我有這樣AWK - 如何獲得唯一一個正則表達式
echo abc | awk '$0 ~ "a\(b\)c" {print $0}'
如果我只是想什麼括號,而不是整個行代碼?這顯然非常簡單,並且有很多awk代碼,所以我不想切換到sed或grep或其他東西。由於
據我知道你不能做到這一點在pattern
的一部分,你必須與match()
功能做到這一點action
部分內:
echo abc | awk '{ if (match($0, /a(b)c/, a) > 0) { print a[1] } }'
它產生:
b
+1,比我的gensub功能更好.. – Kent
你絕對可以在動作部分之外做到這一點:http://stackoverflow.com/questions/2957684/awk-access-captured-group- from-line-pattern/4673336#4673336 –
順便說一句,這是一個GNU awk擴展。 –
隨着GNU awk:
$ echo abc | awk '{print gensub(/a(b)c/,"\\1","")}'
b
謝謝埃德,這是一個很好的選擇。 match()不適用於msysgit的gawk,所以我可能會使用類似於你的建議。 – user2672807
http://stackoverflow.com/questions/15136366/how-to-use-non-捕獲組在grep – aaronman