【发布时间】:2017-04-24 11:04:12
【问题描述】:
我有一些用于 Windows 和 SED 的代码给我一个文件名中的第一组八个字符,它一直给我第二组,只是我无法弄清楚我做错了什么。
我的代码:
echo JiggySauce_20161208_21325005_Meat.txt | sed -r "s/.*_([0-9]*)_.*/\1/g"
加法示例(因此每个下划线分隔符的正则表达式并不总是有效):
echo JiggySauce_Mustard_Mayo_20161208_21325005_Meat.txt | sed -r "s/.*_([0-9]*)_.*/\1/g"
我不断得到这个错误的结果(至少不是我需要的):
21325005
我的预期结果:
20161208
我什至可以和一起生活(最好不要,但我想可以一起工作):
20161208_21325005
如果你有答案,请帮我解决这个问题,因为我正处于静止状态,看起来很愚蠢,像 UHHH 一样被困在这里......
【问题讨论】:
-
可能与 sed 模式匹配贪婪有关。看看stackoverflow.com/questions/1103149/…
-
我看到您对
sed解决方案特别感兴趣,但grep -o可能会做得很好。 -
@MichaelVehrs 为 Grep 添加一个答案,如果你有一个可行的答案,我也可以使用 Grep。