使用bash从字符串中提取整数

时间:2011-06-17 15:24:23

标签: string bash integer

我试图在这里找到解决方案,但不能;给出像

这样的字符串
ABC3
DFGSS34
CVBB3

如何提取整数以便我得到

3
34
3

...

4 个答案:

答案 0 :(得分:25)

只需一个简单的sed命令即可完成任务:

sed 's/[^0-9]//g' file.txt

输出

3
34
3

答案 1 :(得分:13)

对于仅限bash的解决方案,您可以使用参数模式替换:

pax$ xyz=ABC3 ; echo ${xyz//[A-Z]/}
3
pax$ xyz=DFGSS34 ; echo ${xyz//[A-Z]/}
34
pax$ xyz=CVBB3 ; echo ${xyz//[A-Z]/}
3

它与sed解决方案非常相似,但具有不必分叉另一个进程的优点。对于小型工作而言,这可能并不重要,但我遇到过这样的情况,即文件的许多行都有这种情况,并且非分叉是一个显着的速度提升。

答案 2 :(得分:8)

如何使用tr

for s in ABC3 DFGSS34 CVBB3 ; do
    tr -cd 0-9 <<<"$s"
    echo
done

答案 3 :(得分:7)

grep版本怎么样?

grep -o '[0-9]*' file.txt