2013-03-23 23 views
6

awk numaralı belgede sabit parantezleri kullanarak sabit bir sayı hanesini eşleştirmeye çalışıyorum ama sonuç bulamıyorum.Tuhaflıktaki kıvırcık parantezler exp

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

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

Kıvrık diş tellerini kullanmak için belirli bir şey yapmam gerekir mi?

cevap

8

Mac OS X awk (BSD awk) gösterilen ilk komutla çalışır:

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

GNU awk yapmaz. Ters eğik çizgi eklemek GNU awk'a yardımcı olmaz. --re-interval seçeneğini kullanmak, --posix kullanıyor.

$ 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 
$ 

(I mawk 1.3.3 tarihli 1996 nereden geldiğini emin değilim, ama muhtemelen makineniz için awk güncelleştirilmiş bir sürümünü almak zamanıdır.)

+1

sayesinde, bu çalışmaz 'awk: bir seçenek değil: benim sürümüm: --re-interval' hatası ('awk -W version' döndürür 'mawk 1.3.3 Nov 1996') genel cevap gibi görünüyor. –

+0

Vay: Bu 'awk' eski, eski bir sürümüdür. Belki de bu sürümden bir yükseltme araştırmanın zamanı geldi. –

+0

- Aralıklı bir seçenek olmadığında, bu gawk değildir. -re-intervaline ihtiyacınız olduğunda, bu gawk'ın eski bir versiyonudur. Her iki şekilde de son gawk olsun. –

İlgili konular