我有以下bash命令:
cat setup.py | grep name=`
这将返回行
name='SOME_PROJECTNAME',
我该如何将grep的输出通过管道传递到仅检索SOME_PROJECTNAME
?
我尝试过
cat setup.py | grep name= | tr -d 'name=','
但这会删除SOME_PROJECTNAME
中的字符。
答案 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仅在执行了替换操作时才打印行。因此,唯一要打印的行是替换后的行,并带有替换后的值。