我在bash脚本中得到了一个我需要替换的变量。该行中唯一的常量是它将以“_(* x)xxxp.mov”结尾。其中x是数字,可以是3或4的长度。例如,我知道如何替换值,但只有它是常量:
echo 'whiteout-tlr1_1080p.mov' | sed 's/_[0-9]*[0-9][0-9][0-9]p.mov/_h1080p.mov/g'
如何将正则表达式匹配结转到替换线?
编辑:
好的,我刚刚得知grep只能打印匹配才能更好地做这样的事情吗?
urltrail=$(echo $@ | grep -o [0-9]*[0-9][0-9][0-9]p.mov)
newurl=$(sed 's/$urltrail/h$urltrail/g')
嗯,尝试了以上但是我还是挂了。
答案 0 :(得分:1)
sed 's/_\([0-9]*[0-9][0-9][0-9]\)p.mov/_h\1p.mov/g'
后引用\n
,其中n
是一个数字,匹配先前由正则表达式的n
带括号的子表达式匹配的子字符串。
答案 1 :(得分:0)
你没有将旧路径输入sed,所以sed正在等待输入。
newurl=$(echo $@ |sed 's/$urltrail/h$urltrail/g')