将SED集成到Bash循环中的错误

时间:2014-10-09 15:03:30

标签: bash sed cat

我遇到了一个我写过的bash脚本的问题。该命令一直有效,直到SED,我不确定我做错了什么。 HAL是我试图替换的文本文件中的变量。有什么想法吗?

 for i in $( cat LIST.txt) do 
 sed s/HAL/i/ <~/test/template.txt > new$i.txt
 done

给出的错误是“意外令牌sed附近的语法错误”然后它给出了sed行。

1 个答案:

答案 0 :(得分:0)

我认为你错过了for部分和do之间的分号。

for i in $(cat LIST.txt); do 
    sed s/HAL/i/ <~/test/template.txt > new$i.txt
done

这可能更好地重写为(假设LIST.txt中每行有一个单词:

while read i; do
    # Are you sure you don't want to substitute with the variable (`$i`
    # in this case) instead of "i" in the line below?
    sed s/HAL/i/ < ~/test/template.txt > new$i.txt
done < LIST.txt

如果您想用sed替换,您可能希望$i行如下所示:

sed "s/HAL/$i/" < ~/test/template.txt > new$i.txt