![使用 grep 在 Linux 中获取特定行](https://linux22.com/image/735612/%E4%BD%BF%E7%94%A8%20grep%20%E5%9C%A8%20Linux%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E7%89%B9%E5%AE%9A%E8%A1%8C.png)
您好,我是 linux 和 grep 和 awk 命令的新手。
我试图从这个字符串变量中获取数字值,然后将其存储在另一个变量中。
var1="Version must be incremented on update. Current version is: 532"
var2=var1 | grep "?"
我应该怎么做才能从上面的字符串中检索 val 532 并将其存储在 var2 中
答案1
您需要$var1
引用它,而不是var1
。您需要echo
它,这样 Bash 就不会尝试将其作为程序运行。您也应该用双引号引起来。
对于 grep,你需要一个正则表达式来匹配数字,很多模式可能都有效,但我正在使用“字符串末尾的一个或多个数字“,并且您需要 grep 选项-o
来仅打印匹配的文本,而不是整行。
在里面运行这个$()
来阻止 shell 尝试将结果作为程序运行,你的代码如下所示:
var1="Version must be incremented on update. Current version is: 532"
var2=$(echo "$var1" | grep '[0-9]\+$' -o)
echo "$var2"
# 532