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ş:
Nasıl ilk satırı sadece git log çıktı?...
Nasıl tarih sadece SQL Server datetime...
Nasıl stil için bir <select> sad...
Nasıl sadece sayısal (0-9) HTML ınputb...
Nasıl eğer bir dizin zaten mevcut deği...