Yanıtlar:
Bunun için kullanabilirsiniz sed
. BSD'de sed
:
echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"
Veya, -E
seç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 -P
tüm platformlarda mevcut değildir. Fakat eğer öyleyse, geriye / arkasına bakmak sorunu çözmenin çok güzel bir yoludur.