如何使用shell脚本中的循环替换文件中的字符串?

时间:2016-08-09 13:43:35

标签: shell

我是编写shell脚本的新手。我有以下shell脚本。我将使用循环动态替换带有值的字符串。

-regextype type
          Changes  the regular expression syntax understood by -regex and -iregex tests which occur later on the command line.  Currently-implemented types are emacs (this is the default), > posix-awk, posix-basic, posix-
          egrep and posix-extended.

但此脚本会将for i in $(seq 1 5) do sed 's/counter/$i/g' AllMarkers.R > newfile.R done 替换为counter而不是$i1和....如果有人可以告诉我如何替换{{}} {1}}使用循环的序列号。

1 个答案:

答案 0 :(得分:0)

在单引号括起来的字符串中不执行变量插值。 ("Variable interpolation"是该功能的官方名称,用于替换变量引用,例如" $ i"及其值,在字符串内。)

如何解决这个问题的可能性很小。最常见的是:

for i in $(seq 1 5)
do
   sed 's/counter/'$i'/g' AllMarkers.R > newfile.R
done

$i之前停止单引号字符串,放置$i,然后恢复单引号字符串。这种变化将是:

# in case if $i might potentially contain spaces:
sed 's/counter/'"$i"'/g'

# in case if the whole expression to sed has no special characters:
sed "s/counter/$i/g"