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