2

我试图让一些 sed 命令工作但没有成功......

echo -e "This.Is.a.Test.V03.r501.dump" | sed  "s/^\(\w+(\.\w+)*\)\.V[0-9]{2}.*$/\1/g"

基本上,我想在修复时匹配并返回This.Is.a.Test\.V[0-9]{2}但它返回整个输入字符串。

任何帮助表示赞赏,在此先感谢!

4

4 回答 4

1

\w匹配字母数字,您希望仅捕获字母,因此替换\w[:alpha:]. 另外{2}需要替换为\{2\}. 以下适用于 GNUsed

 echo -e "This.Is.a.Test.V03.r501.dump" | 
 sed  "s/^\([[:alpha:].]\+\)\.V[0-9]\{2\}.*$/\1/g"
 This.Is.a.Test
于 2013-06-13T20:44:27.787 回答
1

尝试这个。

echo -e "This.Is.a.Test.V03.r501.dump" | sed -e  "s/\(.*\)\.V[0-9]*.*/\1/"
于 2013-06-13T20:32:07.167 回答
1

另一种方式sed

sed  -r 's/^(([^.]+.){3})([^.]+).*/\1\3/' 
于 2013-06-13T20:47:40.987 回答
0

你在找这个吗?

一种方法是使用 awk

$ echo "This.Is.a.Test.V03.r501.dump" | awk -F'.' 'BEGIN{OFS=FS}{NF=4}1'
This.Is.a.Test
于 2013-06-13T20:22:46.580 回答