Regex 如何在Linux上使用正则表达式查找文件中的信息

Regex 如何在Linux上使用正则表达式查找文件中的信息,regex,linux,shell,scripting,Regex,Linux,Shell,Scripting,我有一个文件,里面有很多行。其中一个看起来像: set auto_upgrade {1 2 3 4} 列表可以包含更多的数字 现在,在一个shell脚本中,我想查看这个文件,找出列表中的最后一个数字是什么。在上面的例子中,它应该找到4。我有一个正则表达式可以找到: set auto_upgrade {\([0-9] \)*\([0-9]\{1,\}\)} 第二组包含我需要的内容。 但是,如何使用此正则表达式?我尝试了sed,但它返回了包含子项的完整文件。我只想要第二组 提前感谢,, 巴特差不

我有一个文件,里面有很多行。其中一个看起来像:

set auto_upgrade {1 2 3 4}
列表可以包含更多的数字

现在,在一个shell脚本中,我想查看这个文件,找出列表中的最后一个数字是什么。在上面的例子中,它应该找到4。我有一个正则表达式可以找到:

set auto_upgrade {\([0-9] \)*\([0-9]\{1,\}\)}
第二组包含我需要的内容。 但是,如何使用此正则表达式?我尝试了sed,但它返回了包含子项的完整文件。我只想要第二组

提前感谢,, 巴特

差不多

cat文件名| perl-pe's/^.*(\d+)\}/$1/'

应该有用。

类似

sed 's/.*\([0-9]\+\)}/\1/g' 
cat文件名| perl-pe's/^.*(\d+)\}/$1/'

应该有用

sed 's/.*\([0-9]\+\)}/\1/g' 
替换部分中的“\1”与组匹配。i、 e.(忽略转义和引号)

将返回pattern2的匹配部分

替换部分中的“\1”与组匹配。i、 e.(忽略转义和引号)


将首先返回pattern2的匹配部分,在安静模式下启动sed:除非被告知,否则它不应打印任何内容(这是标志
-n
)。然后仅在已进行替换时打印(即模式修改器
p


首先,在安静模式下启动sed:它不应该打印任何东西,除非被告知这样做(这是标志
-n
)。然后仅在已进行替换时打印(即模式修改器
p

sed -n 's/set auto_upgrade {\([0-9] \)*\([0-9]\{1,\}\)}/\2/p'