我使用bash遍历文件名,并且需要从前面字符标记的字符串中提取特定数字的方法。实质上,所有文件的名称部分看起来像D01
或D02
。示例文件名是Build-asdasdasd.D01V02.dat
。我试图使用sed,但迄今为止无济于事。谢谢!从字符串中的特定字符串模式中提取数字
0
A
回答
0
您不必在单一表达式中做所有事情。你可以建立一个管道,像这样:
echo 'Build-asdasdasd.D01V02.dat' |
egrep -o '\.D([[:digit:]]{2}[^.]+)' |
sed 's/^.//'
这将返回D01V02
我,但你可能想测试针对更广泛的语料你的表情,看看是否有任何边缘情况。
1
纯击:
name='Build-asdasdasd.D01V02.dat'
[[ "$name" =~ \.(D[[:digit:]]{2}[[:upper:]][[:digit:]]{2})\. ]] \
&& number="${BASH_REMATCH[1]}" || number=''
echo "'$number'"
回波显示
'D01V02'
0
这里是另一个纯bash的回答假设你的文件名总是相似的例子。正则表达式不是必需的。
name='Build-asdasdasd.D01V02.dat'
number="${name%.*}"
number="${name##*.}"
echo "$number"
0
你的问题还不太清楚。如果你想在D
后面的数字,你可以使用
f="Build-asdasdasd.D01V02.dat"
num=$(grep -Po '(?<=D)\d\d' <<< "$f")
或
num=$(sed 's/^.*D\([[:digit:]][[:digit:]]\).*/\1/' <<< "$f")
+0
你应该注意到-P是GNU专用的。 – jordanm
相关问题
- 1. 从字符串中提取特定的字符串模式(swift 2)
- 2. 从字符串中提取字符串
- 3. 从字符串中提取模式
- 4. 从字符串中提取模式?
- 5. 从另一字符串中提取字符串两个特定字符
- 6. 从包含特殊字符的字符串中提取子串
- 7. 从字符串中提取特别匹配的子字符串
- 8. 如何从cpp中给定的字符串中提取特定的字符串?
- 9. 从字符串中提取所有出现的特定字符
- 10. T-sql子字符串函数提取特定的字符串
- 11. R:如何从字符串中提取特定的数字?
- 12. 从Python中的字符串数组中提取子字符串
- 13. 提取字符串特定的格式
- 14. 如何从字符串中提取特定字符
- 15. 从字符串获取特定字符
- 16. sed的 - 提取特定字符串中
- 17. 从字符串中提取字符
- 18. 从字符串中提取数字
- 19. 从字符串中提取数字
- 20. Oracle:从字符串中提取数字
- 21. 从字符串中提取数字
- 22. Rapidminer从字符串中提取数字
- 23. 从字符串中提取数字javascript
- 24. 从字符串中提取数字
- 25. 从字符串中提取数字? Java
- 26. 如何从字符串中提取指定的字符串
- 27. 从数字字符串模式中分离字符串
- 28. 从UTF-8格式字符串中提取双字节字符/子字符串
- 29. 从特定字符的数组中的字符串获取值?
- 30. 正则表达式从字符串中提取子字符串
请张贴你的代码的相关部分改善你的问题,[适当格式化](HTTP://计算器。 COM /编辑 - 帮助)。此外,请发布您收到的实际错误消息,以及您迄今采取了哪些步骤来研究或解决您的编程问题。 –