我想更改一个文件中的单词,另一个单词是我从另一个文件中获取的。
假设我有2个文件:
文件#1包含:jack
文件#2包含:Hello名称
如何用“jack”替换“name”一词?
PS。文件#1只包含这个单词,不需要任何正则表达式。
答案 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
解决方案同时打开file1
和file2
(而不是依赖shell或cat
打开文件),那么它就会#39 ; s可能不可能。