从grep输出中删除单词

时间:2018-09-13 17:30:58

标签: bash grep cat

我有以下bash命令:

cat setup.py | grep name=`

这将返回行

name='SOME_PROJECTNAME',

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

我尝试过

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

但这会删除SOME_PROJECTNAME中的字符。

3 个答案:

答案 0 :(得分:3)

使用grep lookahead

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

默认情况下,选项-n使sed not 打印行。然后,我们将整个属性行(name='SOME_PROJECTNAME')仅替换为值(SOME_PROJECTNAME)。 p命令中的s///标志使sed仅在执行了替换操作时才打印。因此,唯一要打印的行是替换后的行,并带有替换后的值。