开发者

Extract integer from string using bash

开发者 https://www.devze.com 2023-03-14 03:27 出处:网络
I tried to find the solution here but could not; given strings like ABC3 DFGSS34 开发者_如何学GoCVBB3

I tried to find the solution here but could not; given strings like

ABC3
DFGSS34
开发者_如何学GoCVBB3

how do I extract the integers so I get

3
34
3

??


Just a simple sed command will do the job:

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

OUTPUT

3
34
3


For a bash-only solution, you can use parameter patter substition:

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

It's very similar to sed solutions but has the advantage of not having to fork another process. That's probably not important for small jobs but I've had situations where this sort of thing was done to many, many lines of a file and the non-forking is a significant speed boost.


How about using tr?

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


What about a grep version?

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

精彩评论

暂无评论...
验证码 换一张
取 消