Удаление слова из вывода grep

У меня есть следующая команда bash:

cat setup.py | grep name=`

Это возвращает строку

name='SOME_PROJECTNAME',

Как бы я передал этот вывод из grep, чтобы просто получить SOME_PROJECTNAME?

я пытался

cat setup.py | grep name= | tr -d 'name=','

но это удаляет символы в SOME_PROJECTNAME,

3 ответа

Решение

Использование grep вперед

$ grep -oP "(?<=name=').*(?=')" setup.py
#bad cat setup.py | grep name= | cut -d= -f2-
cat setup.py | grep name= | cut -d' -f2

Сед может быть полезным здесь.

 sed -ne "s/name='\(.*\)'/\1/p" setup.py

Опция -n заставляет sed не печатать строки по умолчанию. Затем мы заменяем всю строку свойств (name='SOME_PROJECTNAME') только со значением (SOME_PROJECTNAME). p флаг в s/// Команда заставляет sed печатать строку только в том случае, если замена выполнена. Таким образом, единственной строкой, которая должна быть напечатана, являются те, где была произведена замена, с замененным значением.

Другие вопросы по тегам