Yanıtlar:
Bunun için kullanabilirsiniz sed. BSD'de sed:
echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"
Veya, -Eseçenek olmadan :
sed "s/.*'\([^']\+\)'.*/\1/"
Bu çok satırlı giriş için çalışmıyor. Bunun için ihtiyacınız var:
sed -n "s/.*'\([^']\+\)'.*/\1/p"
( ) +kullanımı \( \) \+: Bu etkin aynıdır:sed "s/.*'\([^']\+\)'.*/\1/"
sed -n "s/.*'\([^']\+\)'.*/\1/p"
Grep belirli bir grubu çıkartamazken, neyin peşinde olduğunu elde etmek için bakış açısını ve iddiaların arkasını kullanabilirsiniz:
echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"
grep -Ptüm platformlarda mevcut değildir. Fakat eğer öyleyse, geriye / arkasına bakmak sorunu çözmenin çok güzel bir yoludur.