📜  从字符串 linux 中提取数字 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:06:34.856000             🧑  作者: Mango

从字符串 linux 中提取数字 - Shell-Bash

在Shell-Bash中,从一个字符串中提取数字是常见的需求。本文将介绍如何使用Shell-Bash从字符串中提取数字。

使用sed命令

使用sed命令是最常用的从字符串中提取数字的方法。假设我们有一个字符串linux-2019-08-15.tar.gz,我们想要提取出其中的数字20190815,我们可以使用以下命令:

echo "linux-2019-08-15.tar.gz" | sed 's/[^0-9]*//g'

这个命令的含义是,使用sed命令将所有非数字的字符替换为空,输出结果为20190815

如果我们想要提取出其中的年份2019,可以使用如下命令:

echo "linux-2019-08-15.tar.gz" | sed 's/[^0-9]*\([0-9][0-9][0-9][0-9]\)[^0-9]*/\1/g'

这个命令的含义是,使用sed命令将所有非数字的字符和它们之前和之后的数字替换为空,只留下四个数字的年份,输出结果为2019

使用grep命令

使用grep命令也可以从字符串中提取数字。假设我们仍有一个字符串linux-2019-08-15.tar.gz,我们想要提取出其中的年份2019,可以使用如下命令:

echo "linux-2019-08-15.tar.gz" | grep -Eo '[0-9]{4}'

这个命令的含义是,使用grep命令匹配出所有符合四位数字格式的字符串,输出结果为2019

使用awk命令

使用awk命令也可以从字符串中提取数字。同样假设我们仍有一个字符串linux-2019-08-15.tar.gz,我们想要提取出其中的年份2019,可以使用如下命令:

echo "linux-2019-08-15.tar.gz" | awk -F'-' '{print $2}'

这个命令的含义是,使用awk命令以-为分隔符将字符串分成几个字段,其中第二个字段即为年份,输出结果为2019

以上是三种常用的从字符串中提取数字的方法,希望对你有所帮助。