使用正则表达式提取grep行的一部分

使用正则表达式提取grep行的一部分,grep,Grep,我使用以下命令获取java.home路径 java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' 上面的命令返回 我如何让它只返回“/usr/lib/jvm/java-11-openjdk-amd64”只需使用awk删除最后一个字段: java -XshowSettings:properties -version 2>&1 >/dev/null | grep

我使用以下命令获取java.home路径

java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'
上面的命令返回


我如何让它只返回“/usr/lib/jvm/java-11-openjdk-amd64”

只需使用awk删除最后一个字段:

java -XshowSettings:properties -version 2>&1 >/dev/null | grep 'java.home' | awk '{print $NF}'
或者再短一点:

java -XshowSettings:properties -version 2>&1 | awk '/java.home/ {print $NF}'

只需使用awk剪切最后一个字段:

java -XshowSettings:properties -version 2>&1 >/dev/null | grep 'java.home' | awk '{print $NF}'
或者再短一点:

java -XshowSettings:properties -version 2>&1 | awk '/java.home/ {print $NF}'

grep-oP'java\.home\s*=\s*\K.+'
如果在
grep
中实现Perl正则表达式,@WiktorStribiżew的建议很好。否则,您可以使用
grep'java.home'|grep-o'[^]*$”
grep-oP'java\.home\s*=\s*\K.+“
如果在
grep
中实现Perl正则表达式,那么@WiktorStribiżew的建议很好。否则,您可以使用
grep'java.home'|grep-o'[^]*$'
我建议添加
-F'='
来解决路径中的空格问题。是的,它也可以使用:
awk-F'=''/java.home/{print$2}'
我建议添加
-F'='
来解决路径中的空格问题。是的,它也有效:
awk-F'=''/java.home/{print$2}'