我正在使用一个shell脚本,它利用sed查找并用另一个变量替换一个变量。在脚本中,我将变量设置为唯一目录:
"sub1=$INPUTPATH\sub1.nii.gz"
...
"sub53=$INPUTPATH\sub53.nii.gz"
然后,shell脚本调用模板(设计用于另一个程序),其中特定变量的所有实例(即占位符标签)都替换为指定的变量。例如:
for i in $TEMPLATE; do
sed -e 's@OUTPUT@'$OUTPUT'@g'\
-e 's@sub1@'$sub1'@g'\
-e 's@sub2@'$sub2'@g'\
...
-e 's@sub53@'$sub53'@g'\
此代码似乎工作得很满意,直到我达到两位数,例如,“sub1”替换“sub10”,“sub11”,“sub12”等,并将第二个数字添加到指定路径的末尾。
sub10=$INPUTPATH\sub1.nii.gz0
sub11=$INPUTPATH\sub1.nii.gz1
sub12=$INPUTPATH\sub1.nii.gz2
我认为此错误是由于代码未指定“完全匹配”。我已经尝试过迭代来纠正这个无济于事(例如,sed replace exact match)。任何帮助是极大的赞赏!谢谢!
答案 0 :(得分:1)
Etan Reisner' recommendation解决了我的问题!示例语法如下:
-e 's@\bsub1\b@'$sub1'@g'\
-e 's@\bsub2\b@'$sub2'@g'\
-e 's@\bsub3\b@'$sub3'@g'\