用1-10000替换文件中的$ 1变量

时间:2013-07-13 21:18:31

标签: bash command-line sed

我想创建这个文件的1000个。

我需要在文件中替换的是一个var

    kitename = $1

但我想这样做1000次以创建1000个差异文件。

我确定它涉及一个循环。

回答人的人比谷歌搜索更有效! THX

2 个答案:

答案 0 :(得分:2)

我不确定你在这里问的是什么,但是下面将创建1000个名为filename.n的文件,每个文件包含1行,其中“kite name = n”,n = 1到n = 1000

for i in {1..1000}
do
echo "kitename = $i" > filename.$i
done

答案 1 :(得分:0)

如果您安装了mysql,它会附带一个名为“replace”的 lovely 命令行util,它可以替换任意数量文件中的文件。很少有人知道这一点,因为它存在于大多数linux boxen中。语法很简单:

replace SEARCH_STRING REPLACEMENT -- targetfiles*

如果你必须使用sed ...那也没关系:)语法类似:

sed -i.bak s/SEARCH_STRING/REPLACEMENT/g targetfile.txt

因此,如果你只是使用数字,你会使用类似的东西:

for a in {1..1000}
  do
     cp inputFile.html outputFile-$a.html
     replace kitename $a -- outputFile-$a.html
 done

这将产生一堆文件“outputFile-1.html”到“outputFile-1000.html”,文件中的“kitename”一词被相关的数字替换。

但是,如果你想从文件中读取你的行而不是通过魔法生成它们,你可能想要更像这样的东西(我们没有使用“for cat file”,因为它会分裂为单词,我假设你可能有多字替换字符串,你想要放入:

cat kitenames.txt | while read -r a
  do
     cp inputFile.html "outputFile-$a.html"
     replace kitename "$a" -- kitename-$a
  done

这将生成一堆文件,如“outputFile-red kite.html”和“outputFile-kite with no string.html”,文件中包含“kitename”替换为相关名称。