sed提取数字

Ned*_*Ned 8 sed extract digits

我尝试用sed提取数字:

echo hgdfjg678gfdg kjg45nn | sed 's/.*\([0-9]\+\).*/\1/g'
Run Code Online (Sandbox Code Playgroud)

但结果是:5如何提取:678和45?提前致谢!

Hen*_*olm 13

问题是.in .*将匹配数字和非数字,并且只要它可以保持匹配 - 只要有一个数字可以匹配的未消耗的数字[0-9].

而不是提取数字,只需删除非数字:

echo hgdfjg678gfdg kjg45nn | sed 's/[^0-9]//g'
Run Code Online (Sandbox Code Playgroud)

甚至

echo hgdfjg678gfdg kjg45nn | tr -d -c 0-9
Run Code Online (Sandbox Code Playgroud)

  • 在sed中,可能希望用单个空格替换非数字,因此可以保持原始的数字分组. (3认同)

Vic*_*iev 6

你可以使用grep和-o选项:

$ echo hgdfjg678gfdg kjg45nn | grep -E -o "[0-9]+"
678
45
Run Code Online (Sandbox Code Playgroud)