从 grep 输出中删除单词

Removing word from grep output

我有以下 bash 命令:

cat setup.py | grep name=`

本returns本行

name='SOME_PROJECTNAME',

我如何将 grep 的输出通过管道传输到只检索 SOME_PROJECTNAME

我试过了

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

但这会删除 SOME_PROJECTNAME 中的字符。

#bad cat setup.py | grep name= | cut -d= -f2-
cat setup.py | grep name= | cut -d' -f2

Sed 在这里可能会有所帮助。

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

选项 -n 使 sed not 默认打印行。然后我们将整个 属性 行 (name='SOME_PROJECTNAME') 替换为仅值 (SOME_PROJECTNAME)。 s/// 命令中的 p 标志使 sed 打印行 仅当替换被执行时 。因此,唯一要打印的行是已完成替换的行,以及替换后的值。

使用greplookahead.

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