如何在变量或字符串上使用 grep?

Nat*_*ate 2 linux bash grep

我正在编写一个 bash 脚本,我需要检查文件名的末尾是否有数字(在一个句点之后),如果有,请获取它,但我不知道如何在变量或字符串上使用正则表达式。

我能够echo在终端中使用管道将字符串导入 grep,如下所示:

 echo "filename.txt.123" | egrep -o "\.[0-9]+$" | egrep -o "[0-9]+"
Run Code Online (Sandbox Code Playgroud)

但是我需要将它的输出分配给一个变量。我尝试这样做:

 revNumber= echo "filename.txt.123" | egrep -o "\.[0-9]+$" | egrep -o "[0-9]+"
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我也尝试了很多其他的东西,但没有任何效果。

在我的 bash 脚本中,我想对变量而不是字符串使用 grep,但这里的概念是相同的。

如何在字符串或变量上使用 grep,然后将结果保存到另一个变量中?

sds*_*sds 5

要将命令的输出分配给变量,请使用$()

revNumber=$(echo "filename.txt.123" | egrep -o "\.[0-9]+$" | egrep -o "[0-9]+")
Run Code Online (Sandbox Code Playgroud)

如果您只关心匹配,您可能需要考虑case

case foo in
  f*) echo starts with f
   ;;
  *) echo does not start with f
   ;;
esac
Run Code Online (Sandbox Code Playgroud)