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

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

cat setup.py | grep name=`

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

name='SOME_PROJECTNAME',

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

я пытался

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

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

0
2
2 729
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

#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 печатать строку только если замена выполнена. Таким образом, единственная строка, которая должна быть напечатана, - это та, в которой была произведена замена, с замененным значением.

Разве это не вернет SOME_PROJECTNAME' (с одинарной кавычкой)?

Benjamin W. 13.09.2018 19:38
Ответ принят как подходящий

Используйте grepсмотреть вперед.

$ grep -oP "(?<=name=').*(?=')" setup.py

Обратите внимание, что в руководстве по grep говорится о -P: Это в высшей степени экспериментально, и grep -P может предупреждать о нереализованных функциях..

Jérôme Pouiller 15.09.2018 09:38

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