A maneira mais fácil de encontrar / substituir em um arquivo usando uma lista?

1

Eu tenho um arquivo, foo.txt e um regexp que eu quero encontrar nesse arquivo. Cada vez que eu encontrar o regexp, eu quero pegar uma linha de outro arquivo, bar.txt, e substituí-la na correspondência regexp que encontrei no foo.txt. Basicamente eu quero encontrar / substituir, mas cada vez que eu substituir quero que o próximo texto de substituição venha da próxima linha em bar.txt.

Existe alguma mágica fácil para fazer isso?

    
por Joseph Garvin 12.11.2012 / 21:47

2 respostas

2

Se eu entendi corretamente, talvez algo como:

awk '{getline repl < "second-file"; sub(/regexp/, repl); print}' < first-file

Ou se regexp aparecer várias vezes por linha ou não em todas as linhas:

perl -pe 's/regexp/chomp($r=<STDIN>);$r/ge' first-file < second-file
    
por 12.11.2012 / 21:58
2
perl -pe '
    BEGIN {
        open IN, "<replacements" or die $!;
    }

    s/pattern/
        $tmp = <IN>;
        chomp $tmp;
        $tmp
    /xe;
' filename
    
por 12.11.2012 / 22:08