sed 命令用另一个文件的整行替换一个文件中的单词

sed 命令用另一个文件的整行替换一个文件中的单词

我想使用 sed 命令(或其他有效的命令)将模板文件中的单词替换为另一个文件的一行中的单词。

举个例子,我有一个包含单词列表的文件,每个单词都在不同的行中,我想使用 sed 获取第一个单词(位于第一行)并将其放入另一个文件中,其中单词“value1 ”写道。我以为与帖子我可以做到,但我无法弄清楚。

图例:

文件A:

Maria
Albert
Toni
Henry
Tom

文件B:

The name of the student is: value1

第 3 行的预期输出:

The name of the student is: Toni

我希望能够将其中一个名称从文件 A 移动到放置 value1 的文件 B。我想多次这样做。

答案1

我会用perl

perl -ne '
  BEGIN{
    local $/ = undef;
    $template = <STDIN>; # slurp file B in
  }
  chomp;
  print $template =~ s/\bvalue1\b/$_/gr' fileA < fileB

如果您的版本perl太旧而无法支持r替代标志,您可以使用临时变量:

perl -ne '
  BEGIN{
    local $/ = undef;
    $template = <STDIN>; # slurp file B in
  }
  chomp;
  ($out = $template) =~ s/\bvalue1\b/$_/g;
  print $out' fileA < fileB

相关内容