【发布时间】:2013-10-22 23:08:49
【问题描述】:
我有两个文件,fileA 有一个名称列表:
AAAAA
BBBBB
CCCCC
DDDDD
和另一个带有另一个列表的文件B:
111
222
333
444
还有一个带有一些文本的第三个文件C:
Hello AAAAA toto BBBBB dear "AAAAA" trird BBBBBB tuizf AAAAA dfdsf CCCCC
所以我需要用 fileB 模式查找并替换 fileC 中 fileA 的每个模式。 有用 !但我意识到 fileC 包含像“AAAAA”这样的词,它不会被“111”替换。
我正在这样做,但它似乎不起作用。
#! /bin/bash
while IFS= read -r lineA && IFS= read -r lineB <&3; do
sed -i -e "s/$lineA/$lineB/g" fileC
done <fileA 3<fileB
【问题讨论】:
-
所以你的意思是你需要用 111 替换 AAAAA ?
-
“似乎不起作用。” - 输出是什么?
-
我测试了您的解决方案,它对我有用:
Hello 111 toto 222 dear 111 trird 222B tuizf 111 dfdsf 333 -
也许您只是没有查看您的文件 C ( -i )。
-
@PeterDev
AAAAAin fileC 不会被替换,因为fileA包含AAAAA而不是AAAAA(注意尾随空格)。