$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ğı 5iç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