regex - 使用 sed 和正则表达式从字符串中提取数字

标签 regex sed integer

向 sed 专家提出的另一个问题。

我有一个表示路径名的字符串,其中包含两个数字。一个例子是:

./pentaray_run2/Trace_220560.dat

我需要提取这些数字中的第二个 - 即 220560

我(在论坛的一些帮助下)能够通过以下方式提取所有数字(即 2220560):

sed "s/[^0-9]//g"

或仅提取第一个数字:

sed -r 's|^([^.]+).*$|\1|; s|^[^0-9]*([0-9]+).*$|\1|'

但我要的是第二个数字!!非常感谢任何帮助。

PS,我要查找的数字始终是字符串中的第二个数字。

最佳答案

这样可以吗?

sed -r 's/.*_([0-9]*)\..*/\1/g'

以你的例子:

kent$   echo "./pentaray_run2/Trace_220560.dat"|sed -r 's/.*_([0-9]*)\..*/\1/g'
220560

关于regex - 使用 sed 和正则表达式从字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12974162/

相关文章:

python - 如何让 python 3 接受整数和字符串答案

c# - RegEx.Replace 但排除 html 标签内的匹配项?

regex - 打印没有指定单词的行的正则表达式是什么?

javascript - 如何向正则表达式添加多个条件?

bash - 仅对包含特定字符串的文件调用 sed - 文件名中的空格问题

linux - 在正则表达式之后更改一行的一部分

java - 将 ArrayList<String> 转换为 int[]

javascript - Node.js dom-parser tagRegExp 正则表达式匹配挂起 : Catastrophic backtracking?

sed - 使用 sed 从完整路径中获取文件名?

c++ - C++ 中的 FOR(限制循环!)