Bash 猛击;“之后我如何检索所有内容?”_"富",;在文件中的一行文本中?

Bash 猛击;“之后我如何检索所有内容?”_"富",;在文件中的一行文本中?,bash,grep,Bash,Grep,我有一个properties.txt,其中包含bash脚本所需的信息 该文件中的每一行都是一条信息,我在每一行前面加上“\u foo”以帮助grep找到所需的信息 到目前为止,我发现我可以使用grep找到我需要的信息,如下所示: doge$ grep -n "_version " properties.txt 这将产生: 1:_version 1.1.0-release 如何删除“_version”并将“1.1.0-release”存储到变量中 默认情况下,该解决方案最好使用几乎每个系统上的

我有一个properties.txt,其中包含bash脚本所需的信息

该文件中的每一行都是一条信息,我在每一行前面加上“\u foo”以帮助grep找到所需的信息

到目前为止,我发现我可以使用grep找到我需要的信息,如下所示:

doge$ grep -n "_version " properties.txt
这将产生:

1:_version 1.1.0-release
如何删除“_version”并将“1.1.0-release”存储到变量中


默认情况下,该解决方案最好使用几乎每个系统上的内置程序

sed-n的/\u版本//p'properties.txt

这是通过用空字符串替换每次出现的
\u version
,然后只打印进行替换的行来实现的


另外,如果它总是出现在开头,您可以使用
^
来防止误报。

sed-n的/u版本//p'properties.txt

这是通过用空字符串替换每次出现的
\u version
,然后只打印进行替换的行来实现的

另外,如果它总是在开始时出现,您可以使用
^
来防止误报。

参数扩展

var='1:_version 1.1.0-release'; echo "${var##* }"
在您的情况下,可以添加一个
命令替换
$()
来捕获/保存命令的输出,并将其保存在变量中

var=$(grep --color=always -n "_version " properties.txt)

echo "${var##* }"
好的,你可以去掉颜色,但也不会受伤。该P.E.不限于bash,它应在兼容ay POSIX的外壳上工作。

参数扩展

var='1:_version 1.1.0-release'; echo "${var##* }"
在您的情况下,可以添加一个
命令替换
$()
来捕获/保存命令的输出,并将其保存在变量中

var=$(grep --color=always -n "_version " properties.txt)

echo "${var##* }"

好的,你可以去掉颜色,但也不会受伤。该P.E.不限于bash,它应该在兼容ay POSIX的shell上工作。

这正是我想要的!我刚刚开始学习shell脚本,关于参数扩展语法我还有很多要学习的。非常感谢。很高兴知道,
$()
也被称为
命令替换
它捕获/保存命令的输出,以便您可以将其分配到变量中。我会更新答案。这正是我想要的!我刚刚开始学习shell脚本,关于参数扩展语法我还有很多要学习的。非常感谢。很高兴知道,
$()
也被称为
命令替换
它捕获/保存命令的输出,以便您可以将其分配到变量中。我将更新答案。如果您想在几乎所有系统上使用它,您应该删除
--color=always
。此外,您的grep将返回一行,看起来像是
17:\u option newst\u version
,这可能不是您要寻找的。我很难(不可能)找到一个只有一行示例的解决方案。这里的问题:我的行距总是一样的吗?制表符还是实空间?单空格还是多空格?没有空格的第二部分?要跳过的单词是否总是相同的?@Wiimm文件中的每一行都将具有相同的语法
\u propertyID propertyValue
,即中间只有一个空格字符。可以修改属性文件的语法以满足代码的期望;它是按照现在的方式设计的。当前计划是,propertyValue在引号之外永远不会有空格@user1934428我删除了--color=always。谢谢如果您想在几乎所有系统上使用它,您应该删除
--color=always
。此外,您的grep将返回一行,看起来像是
17:\u option newst\u version
,这可能不是您要寻找的。我很难(不可能)找到一个只有一行示例的解决方案。这里的问题:我的行距总是一样的吗?制表符还是实空间?单空格还是多空格?没有空格的第二部分?要跳过的单词是否总是相同的?@Wiimm文件中的每一行都将具有相同的语法
\u propertyID propertyValue
,即中间只有一个空格字符。可以修改属性文件的语法以满足代码的期望;它是按照现在的方式设计的。当前计划是,propertyValue在引号之外永远不会有空格@user1934428我删除了--color=always。谢谢