sed命令在文件中添加额外的字符

时间:2019-01-11 15:22:15

标签: bash sed

我有一个包含名称列表file.txt的文本文件,然后循环浏览此文件,我想通过将这些名称添加到新文本文件中并添加一些其他数据来创建新文本文件到新的文本文件。问题是sed命令可以正常工作,但是在某些情况下会附加一些重复的字符。 我的文件file.txt

cat file.txt
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff

我的sed命令是

while IFS="" read -r name
do
    sed -i "s/${name}/uniquemember: ID=${name},ou=people,ou=names,dc=xxxx,dc=xxx/g" file.txt
done<"file.txt"

现在生成的文件是

uniquemember: ID=aaaaa,ou=people,ou=names,dc=xxx,dc=xxx
uniquemember: ID=bbbbb,ou=people,ou=names,dc=motorola,dc=xxx
uniquemember: ID=ccccc,ou=people,ou=names,dc=motorola,dc=xxx
uniquemember: ID=uniquemember: ID=ddddd,ou=people,ou=names,dc=xxx,dc=xxxg,ou=people,ou=names,dc=xxx,dc=xxx
uniquemember: ID=eeeee,ou=people,ou=names,dc=xxx,dc=xxx

我不确定uniquemember: ID=uniquemember: ID=ddddd,ou=people,ou=names,dc=xxx,dc=xxxg,ou=people,ou=names,dc=xxx,dc=xxx行中为什么要添加这么多额外的字符

我该如何解决?

1 个答案:

答案 0 :(得分:2)

您不能使用像这样的简单命令吗?

sed "s/\(.*\)/uniquemember: ID=\1,ou=people,ou=names,dc=xxxx,dc=xxx/g" file.txt

输出:

uniquemember: ID=aaaaa,ou=people,ou=names,dc=xxxx,dc=xxx
uniquemember: ID=bbbbb,ou=people,ou=names,dc=xxxx,dc=xxx
uniquemember: ID=ccccc,ou=people,ou=names,dc=xxxx,dc=xxx
uniquemember: ID=ddddd,ou=people,ou=names,dc=xxxx,dc=xxx
uniquemember: ID=eeeee,ou=people,ou=names,dc=xxxx,dc=xxx
uniquemember: ID=fffff,ou=people,ou=names,dc=xxxx,dc=xxx