向 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/