Нежадность не поддерживается большинством sed
реализаций (я смутно помню одну реализацию, разрешающую PCRE)
Как уже упоминалось в комментариях Wiktor Stribiżew , любая из них будет работать дляв данном случае
$ sed 's/.*tag-start \(.*\) ~p.*/\1/' ip.txt
Snooby
$ sed 's/.*tag-start \([^~]*\) ~p.*/\1/' ip.txt
Snooby
Поскольку тег linux
помечен, у вас может быть GNU grep
с PCRE, и в этом случае вы можете использовать не жадное регулярное выражение при необходимости
$ grep -oP 'tag-start \K.*?(?= ~p)' ip.txt
Snooby