SORU
6 Mayıs 2010, PERŞEMBE


Nasıl sed ile sadece çekilen gruplar çıktı

Çıkış sadece çekilen gruplar sed söylemek için herhangi bir yolu var mı? Örneğin giriş verilir

This is a sample 123 text and some 987 numbers

ve düzeni:

/([\d] )/

Geri dönüş yolu başvuruları ile biçimlendirilmiş yalnızca 123 ve 987 çıktı alabilir miyim?

CEVAP
6 Mayıs 2010, PERŞEMBE


Bu işe başlarken anahtarı sed çıkış olmak istemiyorum ne dışlamak için söylemek gibi sen ne istiyorsun belirtme.

string='This is a sample 123 text and some 987 numbers'
echo "$string" | sed -rn 's/[^[:digit:]]*([[:digit:]] )[^[:digit:]] ([[:digit:]] )[^[:digit:]]*/\1 \2/p'

Bu diyor ki:

  • her satırın (-n) yazdırma için varsayılan yok
  • dışarıda sıfır ya da daha fazla olmayan bir rakam
  • bir veya daha fazla basamak vardır
  • bir veya daha fazla non-basamak hariç
  • bir veya daha fazla basamak vardır
  • dışarıda sıfır ya da daha fazla olmayan bir rakam
  • yazdırma değişimi (p)

Eğer grep (BSD, OS X dahil olmak üzere çalışabilir) GNU varsa:

echo "$string" | grep -Po '\d '

ya da varyasyonları gibi

echo "$string" | grep -Po '(?<=\D )(\d )'

-P seçeneği Perl Uyumlu Düzenli İfadeler sağlar. man 3 pcrepattern man 3 pcresyntax bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alan Fullmer

    Alan Fullmer

    3 EYLÜL 2010
  • hytchme

    hytchme

    9 Mart 2014
  • metagamers

    metagamers

    13 Mayıs 2006