Můžete použít sed
pro tohle. Na BSD sed
:
echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"
Nebo bez -E
možnost:
sed "s/.*'\([^']\+\)'.*/\1/"
Toto nefunguje pro víceřádkový vstup. K tomu potřebujete:
sed -n "s/.*'\([^']\+\)'.*/\1/p"
Zatímco grep nemůže vytvořit výstup pro konkrétní skupinu, můžete použít předběžná a zadní tvrzení k dosažení toho, co chcete:
echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"
Můžete použít \K
resetujte a zahoďte text shody nalevo spolu s dopřednou položkou, která se do textu shody nepřidává:
$ echo "foo 'bar'" | grep -oP "'\K[^']+(?=')"
bar
Pouze GNU grep.
Jak vydávat zvuk pomocí vestavěného reproduktoru z příkazového řádku?
Co způsobuje všechny tyto řádky deklarovat -x ..., když otevřu terminál?