br comando para substituir uma palavra de um arquivo por uma linha inteira de outro arquivo [fechado]

1

Eu quero usar o comando sed (ou algo que funciona) para substituir uma palavra em um arquivo de modelo por uma palavra em uma linha de outro arquivo.

Por exemplo, eu tenho um arquivo com uma lista de palavras, cada palavra está em uma linha diferente e eu quero usar sed para pegar a primeira palavra (que está na primeira linha) e colocá-la em outro arquivo onde a palavra a palavra "valor1" é escrita. Eu pensei que com este post eu poderia ser capaz de fazer isso, mas não consigo descobrir.

Exemplo gráfico:

Arquivo A:

Maria
Albert
Toni
Henry
Tom

Arquivo B:

The name of the student is: value1

Saída esperada para a linha 3:

The name of the student is: Toni

Eu quero poder mover um dos nomes do arquivo A para o arquivo B, onde valor1 é colocado. E eu quero fazer isso várias vezes.

    
por Enrique Torelló Perelló 18.04.2018 / 10:53

1 resposta

2

Eu usaria perl :

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

Se a sua versão de perl for muito antiga para suportar o sinalizador r substitute, você poderá usar uma variável temporária:

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