답변:
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이 특정 그룹을 출력 할 수는 없지만 lookahead 및 뒤에 어설 션을 사용하여 이후를 수행 할 수 있습니다.
echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"
grep -P
모든 플랫폼에서 사용 가능한 것은 아닙니다. 그러나 그렇다면 lookahead / behind를 사용하는 것이 문제를 해결하는 아주 좋은 방법입니다.