如何在bash中的特定单词之前打印字符串?

问题描述

我想学习如何从这个特定的输出中只提取内核版本:

3.10.0-1127.18.2.el7.x86_64Repository rhel-7-server-optional-rpms is listed more than once in the configuration

这是我的目标输出3.10.0-1127.18.2.el7.x86_64

解决方法

重击:

var="3.10.0-1127.18.2.el7.x86_64Repository rhel-7-server-optional-rpms"
echo "${var%%Repository*}"

参见手册中的 3.5.3 Shell Parameter Expansion

,

有几种方法。
“简单”是使用带有正则表达式的 sed 来替换要剥离的部分。
例如:

echo "3.10.0-1127.18.2.el7.x86_64Repository rhel-7-server-optional-rpms" | sed -E "s/Repository.*//"

3.10.0-1127.18.2.el7.x86_64

解释使用的 sed 命令:sed -E "s/Repository.*//" :

E` 用于扩展正则表达式。
和 sed 语法替换是:

s/regexp/replacement/

尝试将正则表达式与模式空间匹配。如果成功, 替换与替换匹配的部分

这里我们替换没有找到的字符串。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...