通过第一个匹配参数输入Sed替换

时间:2013-06-13 20:19:17

标签: regex shell sed

我正试图让一些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 个答案:

答案 0 :(得分:1)

试试这个。

echo -e "This.Is.a.Test.V03.r501.dump" | sed -e  "s/\(.*\)\.V[0-9]*.*/\1/"

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

sed

的另一种方式
sed  -r 's/^(([^.]+.){3})([^.]+).*/\1\3/' 

答案 3 :(得分:0)

你在找这个吗?

一种方法是使用awk

$ echo "This.Is.a.Test.V03.r501.dump" | awk -F'.' 'BEGIN{OFS=FS}{NF=4}1'
This.Is.a.Test