回答:
sed
これに使用できます。BSDの場合sed
:
echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"
または、-E
オプションなし:
sed "s/.*'\([^']\+\)'.*/\1/"
これは、複数行入力では機能しません。そのために必要なもの:
sed -n "s/.*'\([^']\+\)'.*/\1/p"
( ) +
使用する\( \) \+
:これは実質的に同じである:sed "s/.*'\([^']\+\)'.*/\1/"
sed -n "s/.*'\([^']\+\)'.*/\1/p"
grepは特定のグループを出力できませんが、先読みと背後のアサーションを使用して、目的を達成できます。
echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"
grep -P
すべてのプラットフォームで利用できるわけではありません。しかし、そうであれば、lookahead / behindを使用することは、問題を解決する非常に良い方法です。