sed コマンドは、あるファイルの単語を別のファイルの完全な行に置き換えます。

sed コマンドは、あるファイルの単語を別のファイルの完全な行に置き換えます。

sedコマンド(または動作する他のコマンド)を使用して、テンプレートファイルの単語を別のファイルの1行の単語に置き換えたいと思います。

たとえば、単語リストを含むファイルがあり、各単語は別の行にあります。 sedを使用して最初の単語(最初の行にあります)を取得し、「value1」と書きました。と関係があると思いました。これ投稿はできますが、わかりません。

伝説:

ファイルA:

Maria
Albert
Toni
Henry
Tom

ファイルB:

The name of the student is: value1

3行目の予想出力:

The name of the student is: Toni

名前の1つをファイル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

おすすめ記事