2013-03-23 37 views
6

Tôi đang cố gắng khớp một số chữ số cố định bằng cách sử dụng dấu ngoặc nhọn trong awk nhưng tôi không nhận được kết quả nào.Niềng răng xoăn trong awk reg exp

# This outputs nothing 
echo "123" | awk '/^[0-9]{3}$/ {print $1;}' 

# This outputs 123 
echo "123" | awk '/^[0-9]+$/ {print $1;}' 

Tôi có cần phải làm điều gì đó cụ thể để sử dụng dấu ngoặc nhọn không?

Trả lời

8

Mac OS X awk (BSD awk) làm việc với lệnh đầu tiên hiển thị:

$ echo "123" | /usr/bin/awk '/^[0-9]{3}$/ {print $1;}' 
123 
$ 

GNU awk không. Thêm dấu gạch chéo ngược không giúp ích cho GNU awk. Sử dụng tùy chọn --re-interval và sử dụng --posix.

$ echo "123" | /usr/gnu/bin/awk --re-interval '/^[0-9]{3}$/ {print $1;}' 
123 
$ echo "123" | /usr/gnu/bin/awk --posix '/^[0-9]{3}$/ {print $1;}' 
123 
$ 

(Tôi không chắc chắn nơi mawk 1.3.3 đề ngày 1996 đến từ đâu, nhưng nó có lẽ là thời gian để có được một phiên bản cập nhật của awk cho máy tính của bạn.)

+1

Cảm ơn, nó không hoạt động trên phiên bản của tôi, nơi tôi nhận được một 'awk: không phải là một lựa chọn: --re-interval' lỗi ('awk -W phiên bản' trả về' mawk 1.3.3 Nov 1996') nó có vẻ như câu trả lời chung. –

+0

Wow: đó là một phiên bản cũ, cũ của 'awk'. Có lẽ đã đến lúc điều tra nâng cấp từ phiên bản đó. –

+0

Khi - khoảng thời gian không phải là một lựa chọn, đó không phải là chim ưng. Khi bạn cần - khoảng thời gian, đó là một phiên bản cũ của diều hâu. Dù bằng cách nào có được con diều hâu mới nhất. –

Các vấn đề liên quan