如何用Linux中的另一个文件中的单词替换文件中的单词

时间:2016-11-25 18:51:51

标签: regex linux sed

我想更改一个文件中的单词,另一个单词是我从另一个文件中获取的。

假设我有2个文件:

文件#1包含:jack
文件#2包含:Hello名称

如何用“jack”替换“name”一词?
PS。文件#1只包含这个单词,不需要任何正则表达式。

2 个答案:

答案 0 :(得分:3)

好悲伤,只需使用awk:

awk 'NR==FNR{name=$0; next} {sub(/name/,name); print}' file1 file2

答案 1 :(得分:2)

这个shell命令将使用Perl进行替换:

NAME="$(cat file1)" perl -pi -e 's@name@$ENV{NAME}@g' file2

Perl的另一种选择:

perl -pi -e "s@name@$(cat file1)@g" file2

sed的替代方案,使用-i修改文件:

sed -i "s@name@$(cat file1)@g" file2

上述所有解决方案均假设file1不包含换行符(可能除了尾随换行符),反斜杠和符号(@)。

如果您希望纯sed解决方案同时打开file1file2(而不是依赖shell或cat打开文件),那么它就会#39 ; s可能不可能。