在字符串的开头和结尾处修剪字母

时间:2014-10-15 13:28:37

标签: regex sed

# trim the beginning "t"
echo "test"|sed "s/^t//g" 
est

# trim the ending "t"
echo "test"|sed "s/t$//g"
tes

# trim both the beginning and ending "t"
echo "test"|sed "s/(^t)|(t$)//g"
test

为什么第三个失败?我怎样才能使它发挥作用?

2 个答案:

答案 0 :(得分:4)

您需要使用扩展正则表达式:-r

$ echo "test"|sed -r "s/(^t)|(t$)//g"
es

来自man sed

  

-r , - regexx-extended

     

在脚本中使用扩展正则表达式。

或者您也可以逃避所有正则表达式条件,例如Etan Reisner suggests

$ echo test | sed 's/\(^t\)\|\(t$\)//g' 
es

注意您也可以使用-e表示多个命令:

$ echo "test"|sed -e "s/^t//" -e "s/t$//"
es

答案 1 :(得分:1)

你可以简单地使用它,

$ echo test | sed 's/^t\|t$//g'
es