$echo "foo 65 bar" | sed -n -e 's/.*\([0-9]\+\).*/\1/p'
5
Çıktı neden olmasın 65
? Sersem bir şekilde bu [0-9]\+
parça ile eşleşmemeli mi? Sed'in hepsine uymasını nasıl söyleyebilirim 65
?
$echo "foo 65 bar" | sed -n -e 's/.*\([0-9]\+\).*/\1/p'
5
Çıktı neden olmasın 65
? Sersem bir şekilde bu [0-9]\+
parça ile eşleşmemeli mi? Sed'in hepsine uymasını nasıl söyleyebilirim 65
?
Yanıtlar:
.*
İlk açgözlü - 's eşleştirme foo 6
. Orada durmasının tek nedeni, daha fazla eşleştirmenin tüm kalıbın eşleşmesini durduracağı 5
için ([0-9]+)
. Eğer yaptıysanız ([0-9]*)
yerine .*
bütün çizgi eşleşir ve grubunuzda hiçbir şey elde ediyorum. Bunun bir yolu ilk bölüme sayıları eşleştirmemesini söylemektir:
$ echo "foo 65 bar" | sed -n -e 's/[^0-9]*\([0-9]\+\).*/\1/p'
65