我有两个文件。其中一个是一个字母文件,里面有NAME
,我想用另一个文件的内容替换它。另一个文件包含一个名称列表。
例如,字母文件是
Thanks NAME, bye NAME
,文件名中的名称列表为
Mark
Micheal
Jon
...
我希望原始的字母文件没有变化,我希望生成带有更改的原始字母的副本,例如letter1包含Thanks Mark, bye Mark
和letter2 Thanks Micheal, bye Micheal
等等。
如何使用Linux shell脚本执行此操作? 这是我的代码
for (( i=1 ; i<= cat names | wc -l ; i++ ))
do
sed 's/NAME/names/g' letter.txt > letter1.txt
done
cat names | wc -l
无效,sed 's/NAME/names/g' letter.txt > letter1.txt
将NAME
替换为names
,而不是文件名的内容。另外我不知道如何创建多个letter文件的副本。
答案 0 :(得分:0)
我建议您使用该名称作为文件名的补充。
因此在循环中将每个名称读入变量,并将其用于替换。
cat names | while read -r name; do
sed 's/NAME/'"$name"'/g' letter.txt > letter."$name".txt
done
这将创建名为letter.Mark.txt
,letter.Michael.txt
a.s.o。
如果您必须根据$i
中已知的数字拥有文件,请在循环内为变量分配:
name="$(cat names|head -n "$i"|tail -n1)"
(可能有点慢,但有效)