如何用另一个列表替换字符串列表

Asa*_*ser 5 linux text-editing sed

我有一个包含(许多)字符串的文件,我想替换它,所以我想使用一个简单的命令,如:

sed 's/string1/string2/g' file1 > out  
Run Code Online (Sandbox Code Playgroud)

但是,有太多字符串无法手动重复。所以我列出了所有要替换的字符串,每个字符串都在一行中,并将其命名为文件 A。然后我列出了所有替换字符串,并将其命名为文件 B。

有没有办法做这样的事情:

sed 's/line i of file A/line i of file B/g' file1 > out
Run Code Online (Sandbox Code Playgroud)

对于文件 A 的每一行?

Sco*_*ott 1

这基本上是您的第一个想法,但是将替换命令放入文件中,因此它们\xe2\x80\x99更易于管理:

\n\n
\ntmpfile=/tmp/Asasuser.$$\nexec 3< fileA\nexec 4< fileB\n读取 \xe2\x80\x93r astring <&3\ndo\n 读取 \xe2\x80\x93r bstring <&4\n echo " s/$astring/$bstring/" >> "$tmpfile"\ndone\nexec 3<&- 4<&-\nsed \xe2\x80\x93f "$tmpfile" file1 > out\nrm \xe2\x80\x93f "$tmpfile"\n
\n\n

这假设fileAfileB具有相同的行数(并且该数字大于零)并且它们都没有任何未转义的/字符。

\n