通过使用bash

时间:2017-12-28 06:17:49

标签: bash sed

我在文本中有一个模板 LaTeX 文件,其中包含一个计数器(称为“Contador”),如

这样的行
\addplot[] table[]{figure-contador.csv}   

该计数器允许我包含来自CSV文件中编码的大量数字的数据。该文件名为 test.tex 我想从模板中生成100个新文件,如 test0.tex,test1.tex,test2.tex, 等。我以为我可以用sed轻松完成,我试过了剧本

#!/bin/bash
for i in {0..99} do 
    sed 's/contador/$i/g' test.tex > test$i.tex 
done  

但这不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试:

#!/bin/bash
for i in {0..99}; do
    sed "s/contador/$i/g" test.tex > "test$i.tex"
done

有两个问题:

  1. for i in {0..99}do需要用换行符或分号分隔。

  2. 在单引号中,$i等shell变量未展开。要允许它们展开,请使用双引号。

  3. 替代使用awk

    for i in {0..99}; do
        awk -v i="$i" '{gsub(/contador/, i)} 1' test.tex >"test$i.tex"
    done