原来的字符串是这样的:
str-str001-002_01
str-str005-006_05
我想在数字之前和下划线之后提取字符串,所以它会是这样的:
str-str_01
str-str_05
我记得 sed 可以将模式分成这样的组:
sed -n 's/\(^.*\)\([0-9]-[0-9]\)\(.*$\)/\1\3/p'
但它打印:
str-str0002_01
然后我记得[0-9]只是一个数字,所以我用+号或*号尝试了它。然后它给出空结果。
ps:通过使用
echo 'str-str001-002_01' | sed -n 's/\(^.*\)\([0-9]-[0-9]\)\(.*$\)/\2/p'
我可以看到它匹配1-0
。
然后我尝试了:
echo 'str-str001-002_01' | sed -n 's/\(^.*\)\([0-9]\+-[0-9]\+\)\(.*$\)/\2/p'
它留下了前 2 个数字,并且只匹配
1-002
那么如何使其匹配001-002